obtimize object creation with cache