few better exception type + caching buffer allocations