add CompositeComponent class; move equivalence definitions from platform classes to broader component classes