thread safe
better reference generation and allow garbage collection
readme