add dealloc, add shared instance