Factored out methods that are shared between two or three components (and were only in the top-level Component because they have different object types) into a new intermediate parent Component::Shared
Updated overview