refactor, add cache and compression decorators