Formalize definition of Component and split tests
Add Component class and docs