Add basic support for :exhaust

Fixes #94. We should look into the :exhaust optimization later if necessary