allocator seems to work for more complicated types
merged
clang formatted