ctrler and template abstraction