match piece, refactor/redesign