use auto_ptr whenever returning large objects (e.g. lists, sets, etc.)