make input dynamic parameter, cleanup header