add template
add initialzer