enhanced eval and compile in order to support various length args