dont hardcode element names to 'elem'
add new javascript renderer based on a a object tree
new compiler hoists type definitions to the top