fix #64 - reduced GC allocations to a minimum