redesign component system

TODO: build template based dynamic component system