Closed #2833: Returning a new object instead returning an object's reference for some Engine class to avoid some mistake.

Returning a new object instead returning an object's reference for some Engine class to avoid some mistake.