allocate() now has a default parameter
add NodeAllocator