diff --git a/api/v2/etherbone.h b/api/v2/etherbone.h
index 741713ab82729b138a081a0294f354e9987f3fa0..a6f76673f3f6f5c1c46364e750893c6c6cbd9602 100644
--- a/api/v2/etherbone.h
+++ b/api/v2/etherbone.h
@@ -437,7 +437,7 @@ class Cycle {
     ~Cycle(); // End of cycle = destructor
     
     void abort();
-    //void ...don't receive segfault...
+    void silent_finish();
     
     Cycle& read (address_t address, data_t* data = 0);
     Cycle& write(address_t address, data_t  data);
@@ -457,6 +457,9 @@ class Cycle {
 
 class Operation {
   public:
+    bool is_null  () const;
+    
+    /* Only call these if is_null is false */
     bool is_read  () const;
     bool is_config() const;
     bool had_error() const;
@@ -562,6 +565,12 @@ inline void Cycle::abort() {
   cycle = EB_NULL;
 }
 
+inline void Cycle::silent_finish() {
+  if (cycle != EB_NULL)
+    eb_cycle_close_silently(cycle);
+  cycle = EB_NULL;
+}
+
 inline Cycle& Cycle::read(address_t address, data_t* data) {
   eb_cycle_read(cycle, address, data);
   return *this;
@@ -590,6 +599,10 @@ inline Operation::Operation(eb_operation_t op)
  : operation(op) {
 }
 
+inline bool Operation::is_null() const {
+  return operation == EB_NULL;
+}
+
 inline bool Operation::is_read() const {
   return eb_operation_is_read(operation);
 }