finish all the functions and make the process more fluent