wip component abstraction and loader