diff --git a/.gitignore b/.gitignore
index 8ab0fc9022283545188a71996e0f9dc62d093342..373f742e68a960c3bfe08a94edc371ef95903a8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
 */status
 cache
 */cache
+network5445/contracts/*
diff --git a/bin/compile.and.deploy.contract b/bin/compile.and.deploy.contract
index f7a36c0ff88ab9452775a3aa6278b2b18678fe59..9b5c967fb0f692ebf22abeb3e52266195c206637 100755
--- a/bin/compile.and.deploy.contract
+++ b/bin/compile.and.deploy.contract
@@ -32,7 +32,7 @@ var address = rcpt.contractAddress
 var pubcontract = mycontract.at(address)
 console.log( pubcontract.address )
 EOT
-    echo '*** Creating contract. This will take at least 16 seconds.'
+    echo '*** Creating contract. Please stand by.'
     outfile=$( mktemp )
     cleanup "$outfile"
     geth_exec_file $js > $outfile
diff --git a/bin/libbfa.js b/bin/libbfa.js
index 4af1f4172993f9c9531d5fb07ae92c9591ee299f..c542be6aefd3aed27b67c7a90d03e6f8ba6b464c 100644
--- a/bin/libbfa.js
+++ b/bin/libbfa.js
@@ -125,9 +125,10 @@ module.exports = class Libbfa
         var     contractaddress     =   this.fs.realpathSync( contractdir ).replace(/^.*\//, '');
         if ( contractaddress == undefined )
             return;
-        var     abi                 =   JSON.parse(
-            this.fs.readFileSync( contractdir + '/abi' ).toString()
-        );
+        var     abistr              =   this.fs.readFileSync( contractdir + '/abi' ).toString();
+        if ( abistr == undefined )
+            return;
+        var     abi                 =   JSON.parse( abistr );
         if ( abi == undefined )
             return;
         var     c                   =   new w3.eth.Contract( abi, contractaddress );
diff --git a/src/Sealers.sol b/src/Sealers.sol
index 0d5391880c70287c2a6e8447c4413c79e1afbc72..bfdecdd62114bce247d237d357baeaceb9db7f3f 100644
--- a/src/Sealers.sol
+++ b/src/Sealers.sol
@@ -13,16 +13,16 @@ contract Sealers {
     struct Proposal {
         address         victim;     // Whom are we voting about.
         uint            votestart;  // In which block did this vote begin?
-        bool		    promotion;  // true=promotion, false=demotion
-        address[]	    voters;     // List of voters.
+        bool		promotion;  // true=promotion, false=demotion
+        address[]	voters;     // List of voters.
     }
-    address[]           public  sealers;
-    Proposal[]          public  sealerproposals;
+    address[]           private sealers;
+    Proposal[]          private sealerproposals;
 
     event               voteCast( address voter, address victim, bool promotionOrDemotion );
     event               adminChange( address admin, bool promotionOrDemotion );
 
-    constructor()   public
+    constructor() public
     {
         sealers.push( msg.sender );
     }
@@ -47,11 +47,6 @@ contract Sealers {
         return ( _findAddressInList( sealers, subject ) > 0 );
     }
 
-    function    requireSealer( address subject ) public view
-    {
-        require( isSealer(subject), "Not sealer" );
-    }
-
     // Returns an index to the position of the needle inside haystack.
     // Beware that:
     // 0 = not found.
@@ -197,12 +192,13 @@ contract Sealers {
 
         // Is already Sealer and want to promote him?
         // Can't promote someone who is already a sealer.
-        if ( isSealer(victim) && promotion )
+        bool victimSealer   =   isSealer( victim );
+        if ( victimSealer && promotion )
             return false;
 
         // Is not Sealer and want to demote him?
         // Can't demote someone who is not a sealer.
-        if ( !isSealer(victim) && !promotion )
+        if ( !victimSealer && !promotion )
             return false;
 
         // See if the voter is already in the list of voters for this [victim,promotion] tuple