hash: less alloc