I spent 3 hours on this