Optimizations, without losing abstraction