no need to inline template