FULL, dirty code, but works, TESTED, ACCEPTED