Change/higher kinded

This is the new higher-kinded scheme.