Error handling
lSpecify what happens on bad input as well as good
lImportant for security
lNo undefined behavior