completely finished with comments