Change/higher kinded

This is the new higher-kinded scheme. 
instead of ints to encode variance, use a value class over int?