#3 was really messy, what an ugly solution