Moved matches to abstract impl