remove auto_ptr and a big fix