private boolean loadAsNewFunctor(final Functor parameterFunctor) throws DataException {
		if (!(parameterFunctor.getOriginalName() == null)) // not new
			return false;
		if (parameterFunctor.definitionDepth() == 0) { // not a definition
			// translate kinds
			final List<? extends Kind> parameterFunctorInputKinds = parameterFunctor.getInputKinds();
			final List<Kind> inputKinds = new ArrayList(parameterFunctorInputKinds.size());
			for (final Kind parameterFunctorInputKind: parameterFunctorInputKinds)
				inputKinds.add(kindMap.get(parameterFunctorInputKind));
			functorMap.put(parameterFunctor,
				dataFactory.createFunctor(prefix + parameterFunctor.getNameString(), parameterFunctor,
					parameterIndex, kindMap.get(parameterFunctor.getKind()), inputKinds,
					functorNamespace));
			return true;
		}
		// functor is a definition
		final Definition parameterDefinition = (Definition) parameterFunctor;
		try {
			// translate DV constraints
			final DVConstraintsImpl dvConstraints = new DVConstraintsImpl();
			for (final Variable[] pva: parameterDefinition.getDVConstraints()) {
				assert (pva.length == 2): "Invalid DV constraint length";
				dvConstraints.add(translator.translate(pva[0]), translator.translate(pva[1]));
			}
			// translate arguments
			final List<Variable> argList = new ArrayList();
			for (final Variable parameterVariable: parameterDefinition.getArguments())
				argList.add(translator.translate(parameterVariable));
			functorMap.put(parameterFunctor,
				dataFactory.createDefinition(prefix + parameterFunctor.getNameString(),
					parameterDefinition, parameterIndex, dvConstraints, argList,
					translator.translate(parameterDefinition.getDefiniens()), functorNamespace));
			return true;
		} catch (ExpressionException e) {
			logger.error("Unable to translate variable or expression", e);
			throw new DataException("Unable to translate variable or expression", e);
		}
	}