@jcredding I should probably be more clear:

```ruby
def add_query_expression(type, *args, &block)
  relation.expressions << QueryExpression.new(type, *args, &block)
rescue InvalidQueryExpression => e
  raise ArgumentError, e.message
end
# call like
def offset(*args, &block)
  add_query_expression(:offset, *args, &block)
end
```

Also, since you are raising Argument error, should you use the caller's backtrace so the backtrace isn't buried in a private method?