fix duplicate def warnings
remove unnecessary constructor call to string()
use enum instead of preprocessor
yet more preprocessor to enum
get rid of bitfields