Major refactoring on Typing, second try