add Update() and modify Scan() to replenish cache once drained
update example, read me and tests to reflect the Scan() changes