now using inheriting templates