use template system independently