solved 12, but needs improving