This smells like it should be a validator.