protected void addPiece(final Piece piece) throws InvalidMoveException {
		
		if (piece.getType() < 4 && pieces[piece.getType()] == null) {
			pieces[piece.getType()] = piece;
		} else if (piece.getType() == Piece.RING_4 && isEmpty()) {
			pieces[4] = piece;
		} else {
			throw new InvalidRingException();
		}
		if (pieces[4] != null || (pieces[0] != null && pieces[1] != null && pieces[2] != null && pieces[3] != null)) {
			full = true;
		}
	}