refactor to allow custom suggesters to be built