add cache
add cache functional
add cache directory