refactor using matchedAdapter