made cacher a bit more abstract and added usage example