Feature/get enum types

Features on this branch finished, please review.
Please use 4 spaces instead of a tab