re-organize project, add cache clear method