this is my assignment, it is a compleete rework