add offline cache and improve initial positioning of the handle