C89 compatibility changes, explicit allocator, files as parameters