moved to template inheritance system