added applicative_functors, functors, and kinds