Changed interface to use unsigned int internal
Would prefer 'enum class' rather than C++03 enum, but not realizable without templates
Clarify example