Added missing includes for proper inclusion in other libs
More elegant implementation of enum reflection