need reflective allocator delegate
split up step allocation to pass it around