public void processInput(Atom atoms[]) {
		
		Stack args = AtomUtils.makeStack(atoms);

		Atom firstArg = (Atom)args.pop();
		
		if (firstArg.toString().equals(name)) {
			Atom atom = (Atom)args.pop();
			String secondArg = atom.toString();

			if (atom.isInt()) {
				// it's a request to send something out of an outlet
				int outletNum = atom.getInt();

				// send the remaining arguments to the appropriate outlet
				Atom[] otherArgs = AtomUtils.makeAtomList(args);
				if (outletNum < nOutlets+1) outlet(outletNum, otherArgs);
			} else if (secondArg.equals(LinkConstants.NEW_INLET_MESSAGE)) {
				// <inlet num> <field name> <field type> <field type name>
				int inletNum = ((Atom)args.pop()).getInt();
				String fieldName = args.pop().toString();
				setInletAssist(inletNum, fieldName);
			} else if (secondArg.equals(LinkConstants.NEW_OUTLET_MESSAGE)) {
				// <inlet num> <inlet label>
				int inletNum = ((Atom)args.pop()).getInt();
				String inletLabel = args.pop().toString();
				declareOutlets(new int[] {DataTypes.ANYTHING});
				setOutletAssist(inletNum, inletLabel);
			}
		}
	}