private void insertCaseThree(Node<K, V> current) {
	  Node<K, V> grandparent = current.getGrandparent();
	  Node<K, V> uncle = null;
	  Node<K, V> parent = current.getParent();
	  
	  // we want the case where uncle exists, and is red
	  // in all other cases, we make the parent black & uncle if exists, black
	  if (grandparent.getLeft() == parent) {
		  	// don't have to check for not null - if null, fine
			uncle = grandparent.getRight();
	  } else if (grandparent.getRight() == parent) {
			  uncle = grandparent.getLeft();
	  }
	  if (uncle != null) {
		  if (uncle.isRed()) {
			  //make both parent and uncle black, AND GRANDPARENT RED
			  parent.setBlack();
			  uncle.setBlack();
			  grandparent.setRed();
			  // recurse with grandparent
			  insertCaseOne(grandparent);
			  return;
		  }
	  }
	  // either uncle doesn't exist, or uncle exists and is black.
	  insertCaseFour(current, parent, grandparent);
  }