add etag-based caching
add pseudo-UI in a form of REPL