Change source/dest to callbacks. Add Last-Modified header and support for returning 304.