Looking through the `mitkLabelSetImage`-class I found several functions that use the word //layer// or //activeLayer// but two different things are meant by this:
# the number / ID of the (current / active) layer
# the (current / active) label set
For 1. see `void mitk::LabelSetImage::SetActiveLayer(unsigned int layer)`
For 2. see `unsigned int mitk::LabelSetImage::AddLayer(mitk::LabelSet::Pointer lset)`
So this makes me thing what a "Layer" actually is. For me it seems as if this is basically the number / ID of a `LabelSet` in a `LabelSetImage`, since a `LabelSetImage` can contain multiple `LabelSets` (see `std::vector<LabelSet::Pointer> m_LabelSetContainer` inside `mitkLabelSetImage.h`).
`newLabelSetId` is also the returned variable inside the mentioned `unsigned int mitk::LabelSetImage::AddLayer(mitk::LabelSet::Pointer lset)`.
This can also be seen by this functions:
```
mitk::LabelSet *mitk::LabelSetImage::GetLabelSet(unsigned int layer)
{
if (m_LabelSetContainer.size() <= layer)
return nullptr;
else
return m_LabelSetContainer[layer].GetPointer();
}
```
or
```
unsigned int mitk::LabelSetImage::GetNumberOfLayers() const
{
return m_LabelSetContainer.size();
}
```
However, there is also a `std::vector<Image::Pointer> m_LayerContainer` which is something completely different.
I want to discuss the names and see if we can simplify the concept and make the different names easier to understand.