template based, requires mixin only if context is given