fix bug, add modules, add cache system