     ast->clj-map 
     ast))
 
-(def not-working #{"sendmany" "listunspent" "prioritisetransaction" "addnode" "disconnectnode" "setban" "setnetworkactive" "createrawtransaction" "bumpfee"})
+(def not-working #{"prioritisetransaction" "createrawtransaction" "listunspent" "sendmany"})
 
 (defn valid-fn [l] 
   (let [n (first (.split l " "))]
     (not (contains? not-working n))))
 
+(defn parse [l]
+  (let [r (help-parser l)]
+    (if (insta/failure? r) 
+      (throw (IllegalStateException. (pr-str (insta/get-failure r)))) 
+      (ast->clj r))))
+
 (defn def-rpcs [] 
-  (conj 
-    (map 
-      #(let [r (help-parser %)]
-         (ast->clj r)) (filter valid-fn (split-help)))
-    'do))
+  (let [e (conj 
+            (map parse (filter valid-fn (split-help)))
+            'do)]
+    e))
 
 ;;--------------------------------------------------------
 

   :TITLE str
   :MAP-ARG (fn [& args] (symbol (str (reduce (fn [acc [_ k v]] (format "%s%s_%s" (if acc (str acc "-") "") k v)) nil args) "-map")))
   :LIST-ARG #(symbol (format "%s-list" %))
   :BTC (fn 
          ([a] a)
          ([] nil))

(def-rpc-opt getblocktemplate 0 TemplateRequest )
(def-rpc getmininginfo)
(def-rpc-opt getnetworkhashps 0 nblocks height)
#_(def-rpc prioritisetransaction txid priority_delta fee_delta)
(def-rpc-opt submitblock 1 hexdata jsonparametersobject)

;== Network ==
