Full program done without commenting