guess when match
separate completion
cache
better cache
organize code
more refactoring