add kinding, remove Typeable constraint, switch to GHC Nat type level naturals