-> square/dagger (and all this re-factoring work)