add function exposing rules to allow better debugging on types.
change way exposer is built up, using less maddness