@Override
    public void update(final Observable o, final Object arg) {
        if (!SwingUtilities.isEventDispatchThread()) {
            SwingUtilities.invokeLater(new Runnable() {

                @Override
                public void run() {
                    update(o, arg);
                }
            });
            return;
        }
        if (o instanceof Modele) {
            super.getContentPane().remove(super.getScore());
            super.getContentPane().remove(super.getGrid());
            super.getContentPane().remove(super.getPieces());
            super.getContentPane().remove(score2);
            super.getContentPane().remove(grid2);
            super.getContentPane().remove(pieces2);
            Modele _plateau1 = (Modele) o;
            Modele _plateau2 = (Modele) o;
            updateGrid(_plateau1, _plateau2);
            super.getScore().setScore(_plateau1.getScore(), _plateau1.getNbLignes());
            score2.setScore(_plateau2.getScore(), _plateau2.getNbLignes());

        }
        super.getContentPane().add(super.getScore(), BorderLayout.WEST);
        super.getContentPane().add(super.getPieces(), BorderLayout.WEST);
        super.getContentPane().add(super.getGrid(), BorderLayout.CENTER);
        getContentPane().add(grid2, BorderLayout.CENTER);
        getContentPane().add(pieces2, BorderLayout.EAST);
        getContentPane().add(score2, BorderLayout.EAST);
        super.getContentPane().repaint();
    }