Clean up
Introduce Registrable interface, fix some issues in core APIs
Further improve core API, fix some issues, add some TODOs
Add more core interfaces and abstract partials