Component refactoring, still WIP