- Rewrite. Maybe even in C?
- Write test cases for cache, as it seems to contain duplicates in some cases..
