add new kind of callbacks
add support for etag
use etag when available