public void compute() {
		this.view.printMaze(this.currentNode, this.closedNodes); // Print the current maze
		if(openNodes.isEmpty()) {
			this.view.printFailure();
			return; // Exhausted all nodes; NO SOLUTION
		}
		
		this.copyOpen = (ArrayList<Node>) openNodes.clone(); // Prevent concurrent modification

		// This follows the queueing system
		for(int i = 0; i < copyOpen.size(); i++) {
			if(!checkerObject.isGoal(this.currentNode)) {
				openNodes.remove(0); // Remove current node from openNodes ArrayList
				this.checkerObject.nodeCheckAll(this.currentNode, this.closedNodes);
				stageOne();
			} else {
				this.view.printMaze(this.currentNode, this.closedNodes);
				this.view.printSuccess();
				return; // Current Node is the Goal
			}
		}

		// Repeat computation if not exhausted
		compute();
	}