clean up the interface, to keep less number of parameters