TODO all dom/... calls should be created by defcomponent