I finished most of it, this was really hard