Change from c++03 typedef to c++11 using types.
Remove unwanted stuff
Create traits for obtaining information on types - values