template system added