throwing on failed allocations