use template parameters
add RowVector for shape
save progress