It took me three hours to do this...