diff --git a/ccnx/ccnx-closure.cpp b/ccnx/ccnx-closure.cpp
index 528c721..bc9b244 100644
--- a/ccnx/ccnx-closure.cpp
+++ b/ccnx/ccnx-closure.cpp
@@ -2,15 +2,15 @@
 
 namespace Ccnx {
 
-Closure::Closure(int retry, const DataCallback &dataCallback, const TimeoutCallback &timeoutCallback)
-              : m_retry(retry), m_timeoutCallback(NULL), m_dataCallback(NULL)
+Closure::Closure(const DataCallback &dataCallback, const TimeoutCallback &timeoutCallback)
+              : m_timeoutCallback(NULL), m_dataCallback(NULL)
 {
   m_timeoutCallback = new TimeoutCallback (timeoutCallback);
   m_dataCallback = new DataCallback (dataCallback);
 }
 
 Closure::Closure(const Closure &other)
-            :m_retry(other.m_retry), m_timeoutCallback(NULL), m_dataCallback(NULL)
+            : m_timeoutCallback(NULL), m_dataCallback(NULL)
 {
   m_timeoutCallback = new TimeoutCallback(*(other.m_timeoutCallback));
   m_dataCallback = new DataCallback(*(other.m_dataCallback));
diff --git a/ccnx/ccnx-closure.h b/ccnx/ccnx-closure.h
index f006d11..1bcaa06 100644
--- a/ccnx/ccnx-closure.h
+++ b/ccnx/ccnx-closure.h
@@ -21,10 +21,8 @@
 
   typedef boost::function<TimeoutCallbackReturnValue (const Name &)> TimeoutCallback;
 
-  Closure(int retry, const DataCallback &dataCallback, const TimeoutCallback &timeoutCallback = TimeoutCallback());
+  Closure(const DataCallback &dataCallback, const TimeoutCallback &timeoutCallback = TimeoutCallback());
   Closure(const Closure &other);
-  int getRetry() {return m_retry;}
-  void decRetry() { m_retry--;}
   virtual ~Closure();
   virtual void
   runDataCallback(const Name &name, const Bytes &content);
@@ -35,7 +33,6 @@
   dup() const;
 
 protected:
-  int m_retry;
   TimeoutCallback *m_timeoutCallback;
   DataCallback *m_dataCallback;
 };
diff --git a/ccnx/ccnx-tunnel.cpp b/ccnx/ccnx-tunnel.cpp
index dfefc8b..0808663 100644
--- a/ccnx/ccnx-tunnel.cpp
+++ b/ccnx/ccnx-tunnel.cpp
@@ -118,8 +118,8 @@
   m_rit.erase(prefix);
 }
 
-TunnelClosure::TunnelClosure(int retry, const DataCallback &dataCallback, CcnxTunnel *tunnel, const Name &originalInterest, const TimeoutCallback &timeoutCallback)
-                  : Closure(retry, dataCallback, timeoutCallback)
+TunnelClosure::TunnelClosure(const DataCallback &dataCallback, CcnxTunnel *tunnel, const Name &originalInterest, const TimeoutCallback &timeoutCallback)
+                  : Closure(dataCallback, timeoutCallback)
                   , m_tunnel(tunnel)
                   , m_originalInterest(originalInterest)
 {
@@ -134,7 +134,7 @@
 Closure *
 TunnelClosure::dup() const
 {
-  Closure *closure = new TunnelClosure(m_retry, *m_dataCallback, m_tunnel, m_originalInterest, *m_timeoutCallback);
+  Closure *closure = new TunnelClosure(*m_dataCallback, m_tunnel, m_originalInterest, *m_timeoutCallback);
   return closure;
 }
 
diff --git a/ccnx/ccnx-tunnel.h b/ccnx/ccnx-tunnel.h
index 104c7cf..05f981a 100644
--- a/ccnx/ccnx-tunnel.h
+++ b/ccnx/ccnx-tunnel.h
@@ -89,7 +89,7 @@
 class TunnelClosure : public Closure
 {
 public:
-  TunnelClosure(int retry, const DataCallback &dataCallback, CcnxTunnel *tunnel, const Name &originalInterest, const TimeoutCallback &timeoutCallback = TimeoutCallback());
+  TunnelClosure(const DataCallback &dataCallback, CcnxTunnel *tunnel, const Name &originalInterest, const TimeoutCallback &timeoutCallback = TimeoutCallback());
 
   TunnelClosure(const Closure *closure, CcnxTunnel *tunnel, const Name &originalInterest);
 
diff --git a/ccnx/ccnx-wrapper.cpp b/ccnx/ccnx-wrapper.cpp
index 637b9af..b014a07 100644
--- a/ccnx/ccnx-wrapper.cpp
+++ b/ccnx/ccnx-wrapper.cpp
@@ -247,18 +247,16 @@
       break;
 
     case CCN_UPCALL_INTEREST_TIMED_OUT: {
-      if (cp != NULL && cp->getRetry() > 0) {
-        cp->decRetry();
-        return CCN_UPCALL_RESULT_REEXPRESS;
-      }
-
-      Name interest(info->interest_ccnb, info->interest_comps);
-      Closure::TimeoutCallbackReturnValue rv = cp->runTimeoutCallback(interest);
-      switch(rv)
+      if (cp != NULL)
       {
-        case Closure::RESULT_OK : return CCN_UPCALL_RESULT_OK;
-        case Closure::RESULT_REEXPRESS : return CCN_UPCALL_RESULT_REEXPRESS;
-        default : break;
+        Name interest(info->interest_ccnb, info->interest_comps);
+        Closure::TimeoutCallbackReturnValue rv = cp->runTimeoutCallback(interest);
+        switch(rv)
+        {
+          case Closure::RESULT_OK : return CCN_UPCALL_RESULT_OK;
+          case Closure::RESULT_REEXPRESS : return CCN_UPCALL_RESULT_REEXPRESS;
+          default : break;
+        }
       }
       return CCN_UPCALL_RESULT_OK;
     }
