finished, need to check, debug, refactor and comment