add template system