Making the return value generic hurts performance. Similar to the norm case, I noticed 3x performance gain after I changed A to Unit. The performance is similar to the bare-bone implementation after this change. So maybe we should use Unit directly and fix this in other places.