Refactor Piece to be pure virtual