function interpreter