I spent like 15 hours on this.