private void UpdateFrameProcessors()
        {
            var requiredTypes  = new List <Type>();
            var fb             = Behaviours.Count();
            var requestedTypes = Behaviours.Where(b => b.RequestedFrameProcessors != null).SelectMany(b => b.RequestedFrameProcessors);

            if (requestedTypes != null)
            {
                requiredTypes.AddRange(requestedTypes.Distinct());
            }

            var presentTypes = FrameProcessors.Select(p => p.GetType()).Distinct();

            var toRemove = presentTypes.Where(t => !requiredTypes.Contains(t)).ToList();
            var toAdd    = requiredTypes.Where(t => !presentTypes.Contains(t));

            FrameProcessors.Where(p => toRemove.Contains(p.GetType())).ToList().ForEach(p => p.Dispose());
            FrameProcessors.RemoveAll(p => toRemove.Contains(p.GetType()));
            FrameProcessors.AddRange(toAdd.Select(t => (ICameraFrameProcessor)Activator.CreateInstance(t)));
        }