public @Override void execute() throws CommandException {
		final Module module = getModule();
		final Namespace<? extends Kind> kindNamespace = module.getKindNamespace();
		assert (kindNamespace != null): "Module supplied null kind namespace";
		final Namespace<? extends Functor> functorNamespace = module.getFunctorNamespace();
		assert (functorNamespace != null): "Module supplied null functor namespace";
		final TokenFeed feed = getFeed();
		try {
			feed.beginExp();
			feed.confirmBeginExp();
			final Kind kind = kindNamespace.getObjectByString(feed.getAtom());
			if (kind == null) {
				feed.reject("Kind not found");
				throw new CommandException("Kind not found");
			}
			feed.confirmKind();
			feed.beginExp();
			feed.confirmBeginExp();
			final String name = feed.getAtom();
			feed.confirmTerm();
			final List<Kind> inputKindList = new ArrayList();
			Token token = feed.getToken();
			while (token.getTokenClass() == Token.Class.ATOM) {
				final Kind inputKind = kindNamespace.getObjectByString(token.getTokenString());
				if (inputKind == null) {
					feed.reject("Kind not found");
					throw new CommandException("Kind not found");
				}
				inputKindList.add(inputKind);
				feed.confirmKind();
				token = feed.getToken();
			}
			if (token.getTokenClass() != Token.Class.END_EXP) {
				feed.reject("Expected end of expression");
				throw new CommandException("Expected end of expression");
			}
			DataFactory.getInstance().createFunctor(name, kind, inputKindList, functorNamespace);
			feed.confirmEndExp();
			feed.endExp();
			feed.confirmEndCmd();
		} catch (DataException e) {
			try {
				feed.reject("Unable to create functor: " + e.getMessage());
			} catch (ScannerException ignored) {
				// ignored
			}
			throw new CommandException("Unable to create functor", e);
		} catch (ScannerException e) {
			throw new CommandException("Feed error", e);
		}
	}