Remove most gadt and simplify the api construction.
shuffle stuff around to have more consistent libraries.
Rename exposed module for a more consistent interface.