better template inheritance