diff --git a/bin/libbfa.js b/bin/libbfa.js
index 6bab557a5bc15c557432463acb5c0dc1468c3726..9b21511d71acbddb823293ec8476fa2c7806d2ed 100644
--- a/bin/libbfa.js
+++ b/bin/libbfa.js
@@ -86,6 +86,20 @@ module.exports = class Libbfa
                 params: 0
             }]
         });
+        w3.eth.extend({
+            methods: [{
+                name: 'minerstart',
+                call: 'miner_start',
+                params: 0
+            }]
+        });
+        w3.eth.extend({
+            methods: [{
+                name: 'minerstop',
+                call: 'miner_stop',
+                params: 0
+            }]
+        });
         if ( undefined != process.env.BFAACCOUNT ) {
             w3.eth.defaultAccount  =   this.account;
         }
diff --git a/bin/maymine.sh b/bin/maymine.sh
deleted file mode 100755
index ca5daa6d7a68bc00a5e1304dfdb3bda6c7c570bf..0000000000000000000000000000000000000000
--- a/bin/maymine.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-# Robert Martin-Legene <robert@nic.ar>
-
-if [ -z "${BFAHOME}" ]; then echo "\$BFAHOME not set. Did you source bfa/bin/env ?" >&2; exit 1; fi
-source ${BFAHOME}/bin/libbfa.sh || exit 1
-
-res=$( geth_exec_file "${BFAHOME}/src/maymine.js" )
-
-if [ "$res" = "true" ]
-then
-    touch ${BFANODEDIR}/miner
-else
-    rm -f ${BFANODEDIR}/miner
-fi
diff --git a/bin/mayseal.js b/bin/mayseal.js
new file mode 100755
index 0000000000000000000000000000000000000000..0cee239a79a0990802f9dfc6ba83142b2e8dd98a
--- /dev/null
+++ b/bin/mayseal.js
@@ -0,0 +1,66 @@
+#!/usr/bin/node
+// vim:syntax:filetype=javascript:ai:sm
+// vim:expandtab:backspace=indent,eol,start:softtabstop=4
+
+"use strict"
+
+const   Libbfa      =   require( process.env.BFAHOME + '/bin/libbfa.js');
+
+function    mayseal()
+{
+    var bfa         =   new Libbfa();
+    var web3        =   bfa.newweb3();
+    var me          =   web3.eth.defaultAccount.toLowerCase();
+    web3.eth.isMining().then( function(isMining){
+        web3.eth.getSigners().then( function(x){
+            var lcsealers   =   x.map( name => name.toLowerCase() );
+            // console.log( "Miners are:\n\t" + lcsealers.join("\n\t") );
+            var isSigner    =   (lcsealers.indexOf(me) > -1);
+            var sealerfile  =   bfa.nodedir + '/miner';
+            var not         =   "not ";
+            if ( isSigner )
+                not         =   "";
+            console.log( "Account " + me + " is " + not + "allowed to seal." );
+            if ( isSigner )
+            {
+                if ( ! bfa.fs.existsSync( sealerfile ) )
+                {
+                    var fd  =   bfa.fs.openSync( sealerfile, 'a' );
+                    bfa.fs.close( fd );
+                    console.log( "Created 'sealer' file " + sealerfile );
+                }
+                if ( ! isMining )
+                {
+                    web3.eth.minerstart();
+                    console.log( 'Started to seal.' );
+                }
+                else
+                {
+                    console.log( "You are already sealing. All is well." );
+                }
+            }
+            else
+            {
+                if ( bfa.fs.existsSync( sealerfile ) )
+                {
+                    bfa.fs.unlinkSync( sealerfile );
+                    console.log( "Deleted 'sealer' file " + sealerfile );
+                }
+                if ( isMining )
+                {
+                    web3.eth.minerstop();
+                    console.log( 'I was trying to seal, but am not authorized. Stopped trying.' );
+                }
+                else
+                {
+                    console.log( "I wasn't trying to seal anyway. All is well." );
+                }
+            }
+        });
+    },function(x){
+        console.log(x);
+        process.exit(1);
+    })
+}
+
+mayseal();
diff --git a/src/maymine.js b/src/maymine.js
deleted file mode 100644
index d1857d7c96b307fe03a15b498ada5ace521773df..0000000000000000000000000000000000000000
--- a/src/maymine.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// vim:syntax:filetype=javascript:ai:sm
-// vim:expandtab:backspace=indent,eol,start:softtabstop=4
-
-var signer
-signer = (clique.getSigners().indexOf(eth.accounts[0]) > -1)
-if (signer)
-    miner.start()
-else
-    miner.stop()
-signer