refactoring
properly returning objects to their object pools when not  in use