Overall cleanup: make the API more expandable by not using enumerations