ok I think a better strategy is recursive descent