assign 5 done, refactored and documented