Start implementing the Component API
Start working on some code cleanup
Support most of component lifecycle