top-down recognizer