32bit fixes

+ PointerType for bitWidth 
+ cleand up the PR
I just refactored this whole thing. Could you rebase ?

Also, please avoid optional () as it is really unclear how they should behave in some corner cases, so this will be a source of trouble when we want to get the whole thing to compile itself.