22 hours and 500 lines of code..