first draft of keyword matcher