suggested base template abstraction