Improve compile again and change the internal structure of the Type class