Added deleters, simplified allocations, and moved common code to template class

Added noexcept to common implementation