add projection_table function
add fit_nonneg
add template