What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
This pr introduces fixes for #64 as well as #91. This pr significantly reworks how the underlying type system works with significantly better support for parametric types (generics). The change also lay a foundation for the include of other more specific types such as delegates and union types with better attributes.