diff --git a/clplug.cabal b/clplug.cabal
--- a/clplug.cabal
+++ b/clplug.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               clplug
-version:            0.3.1.0
+version:            0.3.2.0
 license:            BSD3
 license-file:       LICENSE
 copyright:          2023
diff --git a/src/Control/Client.hs b/src/Control/Client.hs
--- a/src/Control/Client.hs
+++ b/src/Control/Client.hs
@@ -5,6 +5,9 @@
     , DeriveAnyClass
     , GeneralizedNewtypeDeriving
     , FlexibleContexts
+    , DuplicateRecordFields
+    , TypeSynonymInstances
+    , FlexibleInstances
     #-}
 
 module Control.Client (
@@ -29,7 +32,10 @@
 import Data.Text
 
 type PartialCommand = Id -> Command 
+instance Show PartialCommand where 
+    show x = show $ (x "") 
 
+
 {-# NOINLINE idref #-} 
 idref :: IORef Int
 idref = unsafePerformIO $ newIORef 1
@@ -37,21 +43,28 @@
 -- | commands to core lightning are defined by the set of plugins and version of core lightning so this is generic and you should refer to lightning-cli help <command> for the details of the command you are interested in. A filter object is used to specify the data you desire returned (i.e. {"id":True}) and params are the named fields of the command. 
 data Command = Command { 
       method :: Text
-    , reqFilter :: Value
+    , reqFilter :: Maybe Value
     , params :: Value 
     , ____id :: Value 
     } deriving (Show) 
 instance ToJSON Command where 
-    toJSON (Command m f p i) = 
+    toJSON (Command m Nothing p i) = 
         object [ "jsonrpc" .= ("2.0" :: Text)
                , "id" .= i
+               , "method"  .= m 
+               , "params" .= toJSON p
+               ]
+    toJSON (Command m (Just f) p i) = 
+        object [ "jsonrpc" .= ("2.0" :: Text)
+               , "id" .= i
                , "filter" .= toJSON f
                , "method"  .= m 
                , "params" .= toJSON p
                ]
 
 -- | interface with lightning-rpc.  
-lightningCli :: (MonadReader PlugInfo m, MonadIO m) => PartialCommand -> m (Maybe (Res Value))
+lightningCli :: (MonadReader PlugInfo m, MonadIO m) => 
+                 PartialCommand -> m (Maybe (Res Value))
 lightningCli v = do 
     (h, _) <- ask
     i <- liftIO $ atomicModifyIORef idref $ (\x -> (x,x)).(+1)
@@ -61,9 +74,11 @@
         _ -> pure Nothing 
 
 -- | log wrapper for easier debugging during development.
-lightningCliDebug :: (String -> IO ()) -> PartialCommand -> PluginMonad a (Maybe (Res Value))
+lightningCliDebug :: (MonadReader PlugInfo m, MonadIO m) => 
+                     (String -> IO ()) -> PartialCommand -> m (Maybe (Res Value))
 lightningCliDebug logger v = do 
-    res@(Just (Res x _)) <- lightningCli v 
-    liftIO . logger . show $ x 
+    liftIO . logger . show $ v
+    res <- lightningCli v 
+    liftIO . logger . show $ res 
     pure res 
 
