A 30 minute challenge entry.