@SuppressWarnings("serial")
	public MvcView(MvcModel model, JFrame Frame) {
		// add a property change listener to the model to listen and
		// respond to changes in the model's state
		model.addPropertyChangeListener(new PropertyChangeListener() {
			public void propertyChange(PropertyChangeEvent evt) {
				// if the state change is the one we're interested in...
				if (evt.getPropertyName().equals(MvcModel.STATE)) {
					stateField.setText(evt.getNewValue().toString());
				}
			}
		});

		startButton = new JButton(new AbstractAction("Start") {
			public void actionPerformed(ActionEvent ae) {
				if (control != null) {
					if (this.getValue(NAME) == "Start") {
						this.putValue(Action.NAME, "Stop");
						pauseButton.setEnabled(true);
						control.startButtonActionPerformed(ae);
					} else if (this.getValue(NAME) == "Stop") {
						this.putValue(Action.NAME, "Start");
						pauseButton.setEnabled(false);
						pauseButton.getAction().putValue(Action.NAME, "Pause");
						control.stopButtonActionPerformed(ae);
					} else {
						System.out.println("StartFAIL");
					}
				}
			}
		});
		pauseButton = new JButton(new AbstractAction("Pause") {
			public void actionPerformed(ActionEvent ae) {
				if (control != null) {
					if (this.getValue(NAME) == "Pause") {
						this.putValue(Action.NAME, "Resume");
						control.pauseButtonActionPerformed(ae);
					} else if (this.getValue(NAME) == "Resume") {
						this.putValue(Action.NAME, "Pause");
						control.startButtonActionPerformed(ae);
					} else {
						System.out.println("PauseFAIL");
					}
				}
			}
		});

		pane = new JLayeredPane();
		pane.setPreferredSize(Frame.getMaximumSize());
		pane.add(stateControlPanel(), JLayeredPane.DEFAULT_LAYER, 0);
		
		this.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
		this.setLayout(new BorderLayout());
	}