public IperimeterManager Release(Perimeter perimeter)
        {
            // for the moment we don't give a shit we take anything
            lock (this.lockerwrite)
            {
                if (_innerPerimeter.Contains(perimeter))
                {
                    _innerPerimeter.Remove(perimeter);
                }
            }

            return(this);
        }
        public bool TryToRegister(Perimeter perimeter)
        {
            bool addedyet = false;

            lock (lockerwrite)
            {
                if (IsAvailable(perimeter))
                {
                    _innerPerimeter.Add(perimeter);
                    addedyet = true;
                }
            }

            return(addedyet);
        }
        private bool IsAvailable(Perimeter perimeter)
        {
            // to be called in a lock otherwise it's shitty shitty tell me why

            // TODO this sucks algowise, to be refacto later
            foreach (Perimeter innerPerimeter in _innerPerimeter)
            {
                foreach (string currentKey in perimeter.Keys)
                {
                    foreach (string key in innerPerimeter.Keys)
                    {
                        if (key == currentKey)
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }