finish all functions, need to specify paramters