fixed return parameter
add template