template inheritance done right