probably best to constrain the possible return codes