add: templates intermediate abstraction layer