migrate NSAutoreleasePool
fix retain issue. it must not be called for every single initialization