Type operations for pair types
Recursive types and many other bug fixes