added a cache system for object mapping & removed register_index() call