Implement basic cache, move files, add cache tests, documentation