C89 compatibility added, explicit allocators added