diff --git a/log/include/logdef.h b/log/include/logdef.h
index a8f88db45170fb8107eab5361d0396bad2130ef7..7d1c27f2262392085345adb0a2bb56163f28b33c 100644
--- a/log/include/logdef.h
+++ b/log/include/logdef.h
@@ -203,18 +203,7 @@ typedef struct log_pinposrec {
   short x, y;
 } log_pinposrec;
 
-typedef struct log_nrec {
-  struct log_nrec *next;
-  na_long info;
-  struct log_tool *simtype;
-  struct log_nrec *confnext;
-  short ref;
-  log_gattrrec *attr;
-  na_long temp;
-  unsigned changed : 1, conflict : 1, oconflict : 1, flag : 1, keep : 1,
-	   conflict1 : 1, conflict2 : 1, f8 : 1, f7 : 1, f6 : 1, f5 : 1,
-	   f4 : 1, f3 : 1, f2 : 1, f1 : 1, f0 : 1;
-} log_nrec;   /* Node */
+typedef struct log_nrec log_nrec; /* Node */
 
 typedef struct log_sigrec {
   char *name;
diff --git a/log/include/node.h b/log/include/node.h
index b72143c783cbc4d2b791efb217e514aec1ef3d17..a640390f26d0582ae9377bdfbbc5e799e96357d7 100644
--- a/log/include/node.h
+++ b/log/include/node.h
@@ -2,6 +2,21 @@
 #define NODE_H
 
 #include "logdef.h"
+#include "logstructs.h"
+
+typedef struct log_nrec {
+  struct log_nrec *next;
+  na_long info;
+  struct log_tool *simtype;
+  struct log_nrec *confnext;
+  short ref;
+  log_gattrrec *attr;
+  na_long temp;
+  unsigned changed : 1, conflict : 1, oconflict : 1, flag : 1, keep : 1,
+	   conflict1 : 1, conflict2 : 1, f8 : 1, f7 : 1, f6 : 1, f5 : 1,
+	   f4 : 1, f3 : 1, f2 : 1, f1 : 1, f0 : 1;
+} log_nrec;   /* Node */
+
 
 void dumpnodes();
 
diff --git a/log/include/tool.h b/log/include/tool.h
index abf019938abf592244e8ecce3bbc869d06cc98c1..d96ac62ed3aebaef1c4ddd983cdfa81e21d26980 100644
--- a/log/include/tool.h
+++ b/log/include/tool.h
@@ -4,5 +4,6 @@
 #include "logdef.h"
 
 void calltoolgate(log_grec *g, log_actionkinds act);
+log_tool *findtool(char *name_);
 
 #endif
diff --git a/log/src/ana/capfloat.c b/log/src/ana/capfloat.c
index ba57f51d39857bd5ecd2a3ca1d8006eada7edc1c..66586f2585535ee769c799b58b6f5cdbe79d6dfd 100644
--- a/log/src/ana/capfloat.c
+++ b/log/src/ana/capfloat.c
@@ -25,6 +25,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/capfloat.h"
+#include "node.h"
 
 #define N_Cap           1
 #define Cstart          2
diff --git a/log/src/ana/diode1.c b/log/src/ana/diode1.c
index e256ecc0e2540d1de1975eb8851f73f4c83e5a11..1220680d833a7543652b94d1f2f184c710de8c05 100644
--- a/log/src/ana/diode1.c
+++ b/log/src/ana/diode1.c
@@ -25,7 +25,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/diode1.h"
-
+#include "node.h"
 
 #define N_Is            1
 #define N_Ktqn          2
diff --git a/log/src/ana/ganglion.c b/log/src/ana/ganglion.c
index ff751dca7d3faad12d16c2843601a3013a115696..04720aaa1dbe93c0a67eaf3fd2a0545a40e72195 100644
--- a/log/src/ana/ganglion.c
+++ b/log/src/ana/ganglion.c
@@ -29,7 +29,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/ganglion.h"
-
+#include "node.h"
 
 #define N_CapVinGnd     1
 #define N_CapVinVout    2
diff --git a/log/src/ana/globals.c b/log/src/ana/globals.c
index de9a1c7f59a4f804029e592452d469aab1a2b7ed..fa03ebcb20bf30817c37d2757d9ddf2aab15c4d4 100644
--- a/log/src/ana/globals.c
+++ b/log/src/ana/globals.c
@@ -35,6 +35,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #define GLOBALS_G
 #include "ana/globals.h"
+#include "node.h"
 
 #ifndef NEWCRT_H
 #include <p2c/newcrt.h>
diff --git a/log/src/ana/hres.c b/log/src/ana/hres.c
index 766795a01de5e5259a9c3521d5d2c95c8e5fe8c9..50478924a0aa5ae322c4146e7b3f59e92ebaad8e 100644
--- a/log/src/ana/hres.c
+++ b/log/src/ana/hres.c
@@ -29,7 +29,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/hres.h"
-
+#include "node.h"
 
 #define N_Voffset       1
 #define N_Ipos          2
diff --git a/log/src/ana/idiff.c b/log/src/ana/idiff.c
index 9b5a169a698ef4b2110dd549d374a283c42ef993..22ffe034e3b695bca84214e6eeca423e2a8cd173 100644
--- a/log/src/ana/idiff.c
+++ b/log/src/ana/idiff.c
@@ -26,9 +26,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 
 #include <p2c/p2c.h>
-
-
-
+#include "node.h"
 
 
 #define IDIFF_G
diff --git a/log/src/ana/inter.c b/log/src/ana/inter.c
index 420003c8e561e50d685f15715a081de12c5a646d..b1b39e6d6c74ed41dc598e42ed22820629103aec 100644
--- a/log/src/ana/inter.c
+++ b/log/src/ana/inter.c
@@ -31,7 +31,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #define INTER_G
 #include "ana/inter.h"
-
+#include "node.h"
 
 
 static void log_histinit_32(log_action_t *Globals, int Voltage)
diff --git a/log/src/ana/iscope.c b/log/src/ana/iscope.c
index 49757e7049c34c41d964a0306c8308f0c1a43810..257b44c2163e1a4464bd3fa28d4dcd0be3f126e7 100644
--- a/log/src/ana/iscope.c
+++ b/log/src/ana/iscope.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/iscope.h"
-
+#include "node.h"
 
 #define N_Present       1
 #define N_Format        2
diff --git a/log/src/ana/iswitch1.c b/log/src/ana/iswitch1.c
index 2e8051acaa062a4b84a00fde0022d2423dc34f4d..6a6377e01461c5b26dc0601b84ec86f793e55fe3 100644
--- a/log/src/ana/iswitch1.c
+++ b/log/src/ana/iswitch1.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/iswitch1.h"
-
+#include "node.h"
 
 /*For Attributes*/
 
diff --git a/log/src/ana/iswitch2.c b/log/src/ana/iswitch2.c
index da5c1d9a4f67201d185ca53e413ea56307393ca3..c5d52df24e391557cf4d0dc45535090797ac66d6 100644
--- a/log/src/ana/iswitch2.c
+++ b/log/src/ana/iswitch2.c
@@ -29,7 +29,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #define ISWITCH2_G
 #include "ana/iswitch2.h"
-
+#include "node.h"
 
 /*For Attributes*/
 
diff --git a/log/src/ana/main.c b/log/src/ana/main.c
index 8ccc9bca073f12192c73bb824ff6d380442a16bc..317dd4bc56b0f2ae31fe713209f4ea128673d94a 100644
--- a/log/src/ana/main.c
+++ b/log/src/ana/main.c
@@ -30,7 +30,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 #include <p2c/p2c.h>
 #include "ana/nsolver.h"
 #include "ana/main.h"
-
+#include "node.h"
 
 #define newci_findprocedure  findprocedure
 extern int findprocedure (char *name, void (**start)());
diff --git a/log/src/ana/mmeter.c b/log/src/ana/mmeter.c
index 21378124ee67e84869c3adc3379fad57e2da6803..e6e24e0559bb55a1ebc4511a7215be1dd86e6007 100644
--- a/log/src/ana/mmeter.c
+++ b/log/src/ana/mmeter.c
@@ -27,6 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/mmeter.h"
+#include "node.h"
 
 #define N_Present       1
 #define N_Format        2
diff --git a/log/src/ana/moscap.c b/log/src/ana/moscap.c
index 643274ddb0426047f7b823dd510e8200283e0d03..8e236cd62de29e56f22a39e90ba4e412dda8b2bc 100644
--- a/log/src/ana/moscap.c
+++ b/log/src/ana/moscap.c
@@ -29,7 +29,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/moscap.h"
-
+#include "node.h"
 
 #define N_Model         1
 #define N_LinCap        2
diff --git a/log/src/ana/nfet4.c b/log/src/ana/nfet4.c
index 44c3e584979847cf13203dc5e890c9396ccb295f..f257389ad531c801200b288c5e5d6d8223ca36bc 100644
--- a/log/src/ana/nfet4.c
+++ b/log/src/ana/nfet4.c
@@ -28,7 +28,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/nfet4.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cgd           10
diff --git a/log/src/ana/nfet5.c b/log/src/ana/nfet5.c
index 6d8f82f317f2761e582cc75ad8f56ee75ced7cf9..560006b05862621d2ec66fde8d66959516d3eb92 100644
--- a/log/src/ana/nfet5.c
+++ b/log/src/ana/nfet5.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/nfet5.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cgd           10
diff --git a/log/src/ana/nfet7f.c b/log/src/ana/nfet7f.c
index bb5ffc3a10dd501e68789ed800ed449d779fcf49..30bbbfc6d4db9a9133a23135cbc4e2b484dea21d 100644
--- a/log/src/ana/nfet7f.c
+++ b/log/src/ana/nfet7f.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/nfet7f.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Wdrawn        13
diff --git a/log/src/ana/nfet7t.c b/log/src/ana/nfet7t.c
index 958fab193f4b0348e54d7dfd1c001bea2b5b856d..8e44eb8e1550818d98b1bb9b1b9ff7de49148e94 100644
--- a/log/src/ana/nfet7t.c
+++ b/log/src/ana/nfet7t.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/nfet7t.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Wdrawn        10
diff --git a/log/src/ana/npn1.c b/log/src/ana/npn1.c
index f51113602f65d1140be140792eb331dc15fe5acc..859e48171f12082c5ecaeceda1ba3cd840e20c14 100644
--- a/log/src/ana/npn1.c
+++ b/log/src/ana/npn1.c
@@ -25,7 +25,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/npn1.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cbc           10
diff --git a/log/src/ana/npn2.c b/log/src/ana/npn2.c
index 023ba8da688aa816a75635de0da44a7f0589fe3c..adaa5c321bc99442dcbf3ed9df0fe319f86d63ea 100644
--- a/log/src/ana/npn2.c
+++ b/log/src/ana/npn2.c
@@ -25,7 +25,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/npn2.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cbc           10
diff --git a/log/src/ana/nspc1.c b/log/src/ana/nspc1.c
index 58827036940c117139f42283b32fb30d9bb63f32..b6a910f8707a4e9919ebe1d6d0fbb0b3038761ad 100644
--- a/log/src/ana/nspc1.c
+++ b/log/src/ana/nspc1.c
@@ -43,7 +43,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/nspc1.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cb            12
diff --git a/log/src/ana/pfet4.c b/log/src/ana/pfet4.c
index 2429f056e487c088c135067e592fb498bb045135..6bb9cb63ba3a101d8d43c9b82454a344385e9fd2 100644
--- a/log/src/ana/pfet4.c
+++ b/log/src/ana/pfet4.c
@@ -26,7 +26,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/pfet4.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cgd           10
diff --git a/log/src/ana/pfet5.c b/log/src/ana/pfet5.c
index c6a938dc0e68b070eef54ae3a78e0565035face5..5adcd25245401ad0c69518529d21d096004ad6dc 100644
--- a/log/src/ana/pfet5.c
+++ b/log/src/ana/pfet5.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/pfet5.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cgd           10
diff --git a/log/src/ana/pfet6.c b/log/src/ana/pfet6.c
index 193fdd95382f552014b8ac48ab6df05ece3765d1..5d1ffebe0820a5b4f08bdd9c0a45d4610480d8de 100644
--- a/log/src/ana/pfet6.c
+++ b/log/src/ana/pfet6.c
@@ -24,10 +24,9 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 /* From input file "swiss.text" */
 
 
-
 #include <p2c/p2c.h>
 #include "ana/pfet6.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cgd           13
diff --git a/log/src/ana/pfet7f.c b/log/src/ana/pfet7f.c
index dc1d4173b2a988b1026d50e69048de137ea6e440..2771912428224f6d7956c1a2b875b27f7225b66b 100644
--- a/log/src/ana/pfet7f.c
+++ b/log/src/ana/pfet7f.c
@@ -26,6 +26,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/pfet7f.h"
+#include "node.h"
 
 #define Cstart          1
 #define N_Wdrawn        13
diff --git a/log/src/ana/pfet7t.c b/log/src/ana/pfet7t.c
index 3512fb560696bfb051fc167e5b1c466084c33b75..1aaa5a8c7647174daeab1f0aababf7d25e440805 100644
--- a/log/src/ana/pfet7t.c
+++ b/log/src/ana/pfet7t.c
@@ -24,9 +24,9 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 /* From input file "swiss.text" */
 
 
-
 #include <p2c/p2c.h>
 #include "ana/pfet7t.h"
+#include "node.h"
 
 #define Cstart          1
 #define N_Wdrawn        10
diff --git a/log/src/ana/pnp1.c b/log/src/ana/pnp1.c
index bbf93acec3a7714cf79df80cf20b202b0edf45d3..639ac24cb623f864d836e28883547c52f66795e8 100644
--- a/log/src/ana/pnp1.c
+++ b/log/src/ana/pnp1.c
@@ -25,7 +25,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/pnp1.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cbc           10
diff --git a/log/src/ana/pnp2.c b/log/src/ana/pnp2.c
index e736b6e71dec15cd8543ac72f7c8816ba5a082bf..9c25dde5b876995d9a1d5241eff4a134fb86c144 100644
--- a/log/src/ana/pnp2.c
+++ b/log/src/ana/pnp2.c
@@ -25,7 +25,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/pnp2.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cbc           10
diff --git a/log/src/ana/pspc1.c b/log/src/ana/pspc1.c
index 001c1ab4e95f8d4c56e94912589292797d2bbd33..cfc8a4542b82690532a1ab8105a26f830f88e534 100644
--- a/log/src/ana/pspc1.c
+++ b/log/src/ana/pspc1.c
@@ -42,10 +42,9 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 /* From input file "swiss.text" */
 
 
-
 #include <p2c/p2c.h>
 #include "ana/pspc1.h"
-
+#include "node.h"
 
 #define Cstart          1
 #define N_Cb            12
diff --git a/log/src/ana/pwl.c b/log/src/ana/pwl.c
index 0b1511671de5d8342f98792bd1fb19cd81883640..d8b93f61bbd8ef100df4930837f4b68aef4aa131 100644
--- a/log/src/ana/pwl.c
+++ b/log/src/ana/pwl.c
@@ -83,7 +83,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #define PWL_G
 #include "ana/pwl.h"
-
+#include "node.h"
 
 /* Defaults */
 #define	D_NoDataFile	"none"
diff --git a/log/src/ana/resfloat.c b/log/src/ana/resfloat.c
index 6153ad08ad948b3ea50c2b7e099e8f2e56a01820..b13b33f565405c6c15d605aedb1fb10d3a9be67f 100644
--- a/log/src/ana/resfloat.c
+++ b/log/src/ana/resfloat.c
@@ -28,7 +28,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/resfloat.h"
-
+#include "node.h"
 
 #define N_Res           1
 #define Cstart          2
diff --git a/log/src/ana/rtd.c b/log/src/ana/rtd.c
index 48c30a89ac7ec9b88222bc1859481d5cda0f134b..05aae14fc054dfbca73c08c4ba20944e7fa50c8f 100644
--- a/log/src/ana/rtd.c
+++ b/log/src/ana/rtd.c
@@ -57,6 +57,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #include <math.h>
 #include <p2c/p2c.h>
 #include "ana/rtd.h"
+#include "node.h"
 
 /* Defaults */
 #define	D_Sharpness	100.0
diff --git a/log/src/ana/stairs.c b/log/src/ana/stairs.c
index 5769ad28cd65cd207d5c9c4f7633bdc2cf7fedba..300c31399fa3fa7b19425a1d726ee93459b906bd 100644
--- a/log/src/ana/stairs.c
+++ b/log/src/ana/stairs.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/stairs.h"
-
+#include "node.h"
 
 /*For Attributes*/
 
diff --git a/log/src/ana/tc.c b/log/src/ana/tc.c
index 5aeac7b599f9d6afdb491934d30cb348701b6c27..2760f2af8df9489fe9b0039c47971fea237bf57f 100644
--- a/log/src/ana/tc.c
+++ b/log/src/ana/tc.c
@@ -30,7 +30,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/tc.h"
-
+#include "node.h"
 
 #define Normal          0
 #define Wide            1
diff --git a/log/src/ana/vdiff.c b/log/src/ana/vdiff.c
index cadbd4f214640050ca84c0a02fe25cd8830c3614..22b115aba34aa44cf04d5a20567bdaf1b2db8cb4 100644
--- a/log/src/ana/vdiff.c
+++ b/log/src/ana/vdiff.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/vdiff.h"
-
+#include "node.h"
 
 /*For Attributes*/
 
diff --git a/log/src/ana/vswitch.c b/log/src/ana/vswitch.c
index 6f79f19a72eccf55faa9222926a069eecda760fe..30fb322c439b95fbe86b2cacffef798e2e00d50c 100644
--- a/log/src/ana/vswitch.c
+++ b/log/src/ana/vswitch.c
@@ -27,7 +27,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #include <p2c/p2c.h>
 #include "ana/vswitch.h"
-
+#include "node.h"
 
 /*For Attributes*/
 
diff --git a/log/src/log.c b/log/src/log.c
index aad5f73ecedb7d420c0ab1a82f6e50a2ddde1c14..d9c654e3312d463696434bd600b054ae94f317a6 100644
--- a/log/src/log.c
+++ b/log/src/log.c
@@ -73,6 +73,7 @@
 #include "node.h"
 #include "page.h"
 #include "utils.h"
+#include "tool.h"
 
 char *GetChipmunkPath();
 int findprocedure (char *name, void (**start)());
@@ -3360,38 +3361,30 @@ void confirmsimtype(log_nrec *n)
 
 void scancn (cnrec *cn, struct LOC_checkcombine *LINK);
 
-/* Local variables for scancn: */
-struct LOC_scancn {
-	struct LOC_checkcombine *LINK;
-} ;
-
-static void scan(log_nrec **n, struct LOC_scancn *LINK)
+static void scan(log_nrec **n, struct LOC_checkcombine *LINK)
 {
 	cnrec *cn;
 
-	if (!LINK->LINK->good)
+	if (!LINK->good)
 		return;
 	if (*n != NULL)
-		checknode(*n, LINK->LINK);
-	cn = *LINK->LINK->cnbase;
-	while (cn != NULL && LINK->LINK->good)
+		checknode(*n, LINK);
+	cn = LINK->cnbase;
+	while (cn != NULL && LINK->good)
 	{
 		if ((cn->n == *n && *n != NULL) || cn->np == n)
-			scancn(cn, LINK->LINK);
+			scancn(cn, LINK);
 		cn = cn->next;
 	}
 }
 
 void scancn(cnrec *cn, struct LOC_checkcombine *LINK)
 {
-	struct LOC_scancn V;
-
-	V.LINK = LINK;
 	if (cn->done)
 		return;
 	cn->done = true;
-	scan(&cn->n, &V);
-	scan(cn->np, &V);
+	scan(&cn->n, LINK);
+	scan(cn->np, LINK);
 }
 
 static void frysolder(short x, short y)
diff --git a/log/src/loghier.c b/log/src/loghier.c
index 8ba5f5fcedf08b4dc7beb9c2297deb45e958f0ec..0c9060ff71aae16514792557af0cf92005b66e22 100644
--- a/log/src/loghier.c
+++ b/log/src/loghier.c
@@ -33,7 +33,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 #include <p2c/p2c.h>
 #include <p2c/strings.h>
 #include "loghier.h"
-
+#include "node.h"
 
 
 static log_action_t *lact;
diff --git a/log/src/logntk.c b/log/src/logntk.c
index e06b2f3966f5f72a9ba312bf723e43fddeb8f701..3ef6d601240d3a41f82e64907c84a481f1af9302 100644
--- a/log/src/logntk.c
+++ b/log/src/logntk.c
@@ -38,6 +38,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 #include <p2c/p2c.h>
 #include <p2c/strings.h>
 #include "logntk.h"
+#include "node.h"
 
 
 #define main_name       "-Main-"
diff --git a/log/src/logsim.c b/log/src/logsim.c
index ff426d54532529c0f6295b6f033a5d15c9d3714d..95a8edf626dfcb6c3df75e9b85ebafd9418fb41c 100644
--- a/log/src/logsim.c
+++ b/log/src/logsim.c
@@ -40,6 +40,7 @@
 
 #include <p2c/p2c.h>
 #include "logsim.h"
+#include "node.h"
 
 
 #define newci_findprocedure  findprocedure
diff --git a/log/src/logsimasm.c b/log/src/logsimasm.c
index eea138a42db8eb21028617bb52326f4f89cb9a38..ead728fc5498cf381776490c07c295f110ca171d 100644
--- a/log/src/logsimasm.c
+++ b/log/src/logsimasm.c
@@ -30,6 +30,8 @@
 #define LOGSIMA_G
 #include "logsima.h"
 
+#include "node.h"
+
 static int trace_16 = 0;
 #define trace_16  (logsima_action.lact->quiet ? -1 : 0)
 
diff --git a/log/src/logsimh.c b/log/src/logsimh.c
index f58e83b881d06323906f7cc3d9ed895197d7d9e0..91f75c79f4c625e76e3e001b6fe8e69a37ebc2ed 100644
--- a/log/src/logsimh.c
+++ b/log/src/logsimh.c
@@ -38,6 +38,7 @@
 #include <p2c/p2c.h>
 #include <p2c/strings.h>
 #include "logsimh.h"
+#include "node.h"
 
 
 /* caged_date="R   lastmoddate = '$X by $U';" */
diff --git a/log/src/logspc.c b/log/src/logspc.c
index 6b37fcd6b7449607afe7a2011da8740e45e6f498..8fb44a2e0a34b89a5bebca660d282eaf17ab76a8 100644
--- a/log/src/logspc.c
+++ b/log/src/logspc.c
@@ -80,6 +80,9 @@ Version		Date	Description
 
 /* Spice Globals */
 
+#include <p2c/p2c.h>
+#include "node.h"
+
 #define LOGSPC_VERSION "1.0 Beta"
 
 long	m_ctr, x_ctr;			/* spice counters */
diff --git a/log/src/node.c b/log/src/node.c
index ced7386adfec3988ee7a2e85ea4ca56ea9e667bf..50789cbca3358338ee0df037c8d0a5314bae8c13 100644
--- a/log/src/node.c
+++ b/log/src/node.c
@@ -13,41 +13,41 @@
 
 static log_nrec *freenode = NULL;
 
-void newnptr(log_nrec **n)
+void newnptr(log_nrec **node)
 {
 	if (freenode == NULL)
 	{
-		*n = (log_nrec *)Malloc(sizeof(log_nrec));
+		*node = (log_nrec *)Malloc(sizeof(log_nrec));
 	}
 	else
 	{
-		*n = freenode;
+		*node = freenode;
 		freenode = freenode->next;
 	}
 }
 
 
-void newnode(log_nrec **n, uchar st)
+void newnode(log_nrec **node, uchar st)
 {
-	newnptr(n);
-	(*n)->simtype = findsimtype(st);
-	(*n)->changed = false;
-	(*n)->conflict = false;
-	(*n)->conflict1 = false;
-	(*n)->conflict2 = false;
-	(*n)->oconflict = false;
-	(*n)->flag = false;
-	(*n)->keep = false;
-	(*n)->ref = 0;
-	newattrs(&(*n)->attr, (*n)->simtype->nnumattrs, (*n)->simtype->nattr);
-	(*n)->info = (na_long)0;
-	(*n)->temp = (na_long)0;
-	stamp(&(*n)->simtype->netstamp);
-	calltoolnode(*n, act_newnode);
-	(*n)->next = gg.nbase;
-	gg.nbase = *n;
+	newnptr(node);
+	(*node)->simtype = findsimtype(st);
+	(*node)->changed = false;
+	(*node)->conflict = false;
+	(*node)->conflict1 = false;
+	(*node)->conflict2 = false;
+	(*node)->oconflict = false;
+	(*node)->flag = false;
+	(*node)->keep = false;
+	(*node)->ref = 0;
+	newattrs(&(*node)->attr, (*node)->simtype->nnumattrs, (*node)->simtype->nattr);
+	(*node)->info = (na_long)0;
+	(*node)->temp = (na_long)0;
+	stamp(&(*node)->simtype->netstamp);
+	calltoolnode(*node, act_newnode);
+	(*node)->next = gg.nbase;
+	gg.nbase = *node;
 	if (gg.traceflag)
-		fprintf(tracefile, "Make node %ld\n", (long)(*n));
+		fprintf(tracefile, "Make node %p\n", *node);
 }
 
 /*==================  COPYNODE  ==================*/
@@ -56,24 +56,24 @@ void newnode(log_nrec **n, uchar st)
 /*=                                              =*/
 /*================================================*/
 
-void copynode(log_nrec *old, log_nrec **n)
+void copynode(log_nrec *old, log_nrec **node)
 {
-	newnptr(n);
-	**n = *old;
-	(*n)->ref = 0;
-	copyattrs(&(*n)->attr, old->attr, (*n)->simtype->nnumattrs,
-			(*n)->simtype->nattr);
+	newnptr(node);
+	**node = *old;
+	(*node)->ref = 0;
+	copyattrs(&(*node)->attr, old->attr, (*node)->simtype->nnumattrs,
+			(*node)->simtype->nattr);
 	gg.actnode2 = old;
-	calltoolnode(*n, act_copynode);
-	(*n)->next = gg.nbase;
-	gg.nbase = *n;
-	if ((*n)->conflict || (*n)->oconflict)
+	calltoolnode(*node, act_copynode);
+	(*node)->next = gg.nbase;
+	gg.nbase = *node;
+	if ((*node)->conflict || (*node)->oconflict)
 	{
-		(*n)->confnext = nodeconflictbase;
-		nodeconflictbase = *n;
+		(*node)->confnext = nodeconflictbase;
+		nodeconflictbase = *node;
 	}
 	if (gg.traceflag)
-		fprintf(tracefile, "Copy node %ld from %ld\n", (long)(*n), (long)old);
+		fprintf(tracefile, "Copy node %p from %p\n", *node, old);
 }
 
 
@@ -83,29 +83,29 @@ void copynode(log_nrec *old, log_nrec **n)
 /*=                                              =*/
 /*================================================*/
 
-void disposenptr(log_nrec **n)
+void disposenptr(log_nrec **node)
 {
-	(*n)->next = freenode;
-	freenode = *n;
+	(*node)->next = freenode;
+	freenode = *node;
 }
 
 
 #define rtn             "DISPNODE"
 
 
-void disposenode(log_nrec **n)
+void disposenode(log_nrec **node)
 {
 	log_nrec *n1, *n2;
 
 	if (gg.traceflag)
-		fprintf(tracefile, "Dispose node %ld\n", (long)(*n));
-	if (*n == NULL)
+		fprintf(tracefile, "Dispose node %p\n", *node);
+	if (*node == NULL)
 		return;
-	if ((*n)->conflict || (*n)->oconflict)
+	if ((*node)->conflict || (*node)->oconflict)
 	{
 		n1 = nodeconflictbase;
 		n2 = NULL;
-		while (n1 != NULL && n1 != *n)
+		while (n1 != NULL && n1 != *node)
 		{
 			n2 = n1;
 			n1 = n1->confnext;
@@ -113,93 +113,93 @@ void disposenode(log_nrec **n)
 		if (n1 == NULL)
 			report(11, rtn);
 		else if (n2 == NULL)
-			nodeconflictbase = (*n)->confnext;
+			nodeconflictbase = (*node)->confnext;
 		else
-			n2->confnext = (*n)->confnext;
+			n2->confnext = (*node)->confnext;
 	}
-	if (*n == gg.probenode)
+	if (*node == gg.probenode)
 		gg.probenode = NULL;
-	stamp(&(*n)->simtype->netstamp);
-	calltoolnode(*n, act_disposenode);
+	stamp(&(*node)->simtype->netstamp);
+	calltoolnode(*node, act_disposenode);
 	n1 = gg.nbase;
-	if (*n == n1)
+	if (*node == n1)
 	{
-		gg.nbase = (*n)->next;
+		gg.nbase = (*node)->next;
 	}
 	else
 	{
-		while (n1 != NULL && n1->next != *n)
+		while (n1 != NULL && n1->next != *node)
 			n1 = n1->next;
 		if (n1 == NULL)
 			report(10, rtn);
 		else
-			n1->next = (*n)->next;
+			n1->next = (*node)->next;
 	}
-	disposeattrs(&(*n)->attr, (*n)->simtype->nnumattrs, (*n)->simtype->nattr);
-	disposenptr(n);
+	disposeattrs(&(*node)->attr, (*node)->simtype->nnumattrs, (*node)->simtype->nattr);
+	disposenptr(node);
 }
 
 #undef rtn
 
 
-int nodeexists(log_nrec *n)
+int nodeexists(log_nrec *node)
 {
 	log_nrec *n1;
 
 	n1 = gg.nbase;
-	while (n1 != NULL && n1 != n)
+	while (n1 != NULL && n1 != node)
 		n1 = n1->next;
-	return (n1 != NULL);
+	return n1 != NULL;
 }
 
 
-void newnoderef(log_nrec **n, uchar st, long ref)
+void newnoderef(log_nrec **node, uchar st, long ref)
 {
-	newnode(n, st);
-	(*n)->ref = ref;
+	newnode(node, st);
+	(*node)->ref = ref;
 }
 
 
-log_nrec *refnode(log_nrec *n)
+log_nrec *refnode(log_nrec *node)
 {
-	if (n == NULL)
-		return n;
-	n->ref++;
+	if (node == NULL)
+		return node;
+	node->ref++;
 	if (gg.traceflag)
-		fprintf(tracefile, "Reference node %ld -> %d\n", (long)n, n->ref);
-	return n;
+		fprintf(tracefile, "Reference node %p -> %d\n", node, node->ref);
+	return node;
 }
 
 
 #define rtn             "UNREFNODE"
 
 
-void unrefnode(log_nrec **n)
+void unrefnode(log_nrec **node)
 {
-	if (*n == NULL)
+	if (*node == NULL)
 		return;
-	(*n)->ref--;
+	(*node)->ref--;
 	if (gg.traceflag)
-		fprintf(tracefile, "Unref node %ld -> %d\n", (long)(*n), (*n)->ref);
-	if ((*n)->ref > 0)
+		fprintf(tracefile, "Unref node %p -> %d\n", *node, (*node)->ref);
+	if ((*node)->ref > 0)
 		return;
-	if ((*n)->ref < 0)
+	if ((*node)->ref < 0)
 		report(10, rtn);
 	else {
-		if (!(*n)->keep)
-			disposenode(n);
+		if (!(*node)->keep)
+			disposenode(node);
 	}
 }
 
 #undef rtn
 
 
-void switchnode(log_nrec **n, log_nrec *n2)
+void switchnode(log_nrec **node, log_nrec *n2)
 {
-	if (*n != n2)
+	if (*node != n2)
 	{
-		unrefnode(n);
-		*n = refnode(n2);
+		unrefnode(node);
+		*node = refnode(n2);
 	}
 }
 
@@ -243,8 +243,8 @@ void dumpnodes()
 	while (j == i && n != NULL)
 	{
 		i++;
-		fprintf(tracefile, "%12ld  T:%s  Ref:%d",
-				(long)n, n->simtype->name, n->ref);
+		fprintf(tracefile, "%p  T:%s  Ref:%d",
+				n, n->simtype->name, n->ref);
 		FORLIM = gg.lastsignal;
 		for (j = 0; j < FORLIM; j++)
 		{
@@ -372,9 +372,9 @@ void dumpnodes()
 			"\n\n-------------------------------------------------------------------------\n\n\n");
 }
 
-void delgetnode(log_nrec **save, log_nrec **old, log_nrec **n)
+void delgetnode(log_nrec **save, log_nrec **old, log_nrec **node)
 {
-	copynode(*old, n);
+	copynode(*old, node);
 }
 
 #define rtn             "COMBINENODES"
diff --git a/log/src/screen.c b/log/src/screen.c
index af7f07505dd954e6b520d7fb4da985f6cee818fb..2fe692d03297cdd3eccec02ca21be91f050aab99 100644
--- a/log/src/screen.c
+++ b/log/src/screen.c
@@ -37,6 +37,7 @@
 #include "logfont.h"
 #include "utils.h"
 #include "screen.h"
+#include "node.h"
 
 static rablistrec rabtable[rabtabsize];   /* Positions of rabbits */
 
diff --git a/log/src/tool.c b/log/src/tool.c
index d82db466c8806704886b089cb1787ec798d4a8be..7f27ab34ccfedb888a3d8bf6901f99a05374aae5 100644
--- a/log/src/tool.c
+++ b/log/src/tool.c
@@ -4,6 +4,7 @@
 #include "logdef.h"
 #include "logglobals.h"
 #include "utils.h"
+#include "node.h"
 
 void newtool(log_tool **t, char *name)
 {
diff --git a/log/src/wire.c b/log/src/wire.c
index 79598b76c8b149e3aa6b351628a6e29fe6e59c46..f8ad535df78f2e0b3b414a9eb88199d845c821fb 100644
--- a/log/src/wire.c
+++ b/log/src/wire.c
@@ -5,6 +5,7 @@
 #include "logdef.h"
 #include "utils.h"
 #include "wire.h"
+#include "node.h"
 
 void fryhwire(log_hwrec *hw);
 void fryvwire(log_vwrec *vw);