TODO: create a validator for this and an @precondition