adding quit for tokenManager goroutine
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index f705495..96a780a 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -109,8 +109,6 @@
 					Expect(seq).To(Equal(cl.LastSequence))
 
 					tokenManager.close()
-					//sleep to ensure tokenManager has closed.  t.close() is non blocking
-					time.Sleep(1500 * time.Millisecond)
 					close(done)
 				})
 			}
@@ -146,8 +144,6 @@
 				Expect(s.Tables).To(BeNil())
 
 				tokenManager.close()
-				//sleep to ensure tokenManager has closed.  t.close() is non blocking
-				time.Sleep(1500 * time.Millisecond)
 				close(done)
 			}
 		})
diff --git a/token.go b/token.go
index a1a1263..e461e70 100644
--- a/token.go
+++ b/token.go
@@ -14,6 +14,7 @@
 var (
 	refreshFloatTime = time.Minute
 	getTokenLock     sync.Mutex
+	quitPollingForToken chan bool = make(chan bool)
 )
 
 /*
@@ -28,6 +29,7 @@
 func createTokenManager() *tokenMan {
 	t := &tokenMan{}
 	t.doRefresh = make(chan bool, 1)
+	t.continueMaintenance = true
 	t.maintainToken()
 	return t
 }
@@ -35,6 +37,7 @@
 type tokenMan struct {
 	token     *oauthToken
 	doRefresh chan bool
+	continueMaintenance bool
 }
 
 func (t *tokenMan) getBearerToken() string {
@@ -43,13 +46,12 @@
 
 func (t *tokenMan) maintainToken() {
 	go func() {
+		t.getToken()
 		for {
-			if t.token.needsRefresh() {
-				getTokenLock.Lock()
-				t.retrieveNewToken()
-				getTokenLock.Unlock()
-			}
 			select {
+			case <- quitPollingForToken:
+				log.Info("Signal to quit maintenance of token recieved")
+				return
 			case _, ok := <-t.doRefresh:
 				if !ok {
 					log.Debug("closed tokenMan")
@@ -59,6 +61,12 @@
 			case <-time.After(t.token.refreshIn()):
 				log.Debug("auto refresh token")
 			}
+
+			if t.token.needsRefresh() && t.continueMaintenance{
+				getTokenLock.Lock()
+				t.retrieveNewToken()
+				getTokenLock.Unlock()
+			}
 		}
 	}()
 }
@@ -85,8 +93,9 @@
 
 func (t *tokenMan) close() {
 	log.Debug("close token manager")
+	quitPollingForToken <- true
 	close(t.doRefresh)
-
+	t.continueMaintenance = false
 }
 
 // don't call externally. will block until success.
@@ -100,7 +109,7 @@
 	}
 	uri.Path = path.Join(uri.Path, "/accesstoken")
 
-	pollWithBackoff(nil, t.getRetrieveNewTokenClosure(uri), func(err error) {log.Errorf("Error getting new token : ", err)})
+	pollWithBackoff(quitPollingForToken, t.getRetrieveNewTokenClosure(uri), func(err error) {log.Errorf("Error getting new token : ", err)})
 }
 
 func (t *tokenMan) getRetrieveNewTokenClosure(uri *url.URL) func(chan bool) error {
diff --git a/token_test.go b/token_test.go
index d4d5e07..4fbd0b0 100644
--- a/token_test.go
+++ b/token_test.go
@@ -65,7 +65,7 @@
 	Context("tokenMan", func() {
 
 		It("should get a valid token", func() {
-
+log.Info("\n\n\n\nHERE\n\n")
 			tokenManager = createTokenManager()
 			token := tokenManager.getToken()
 
@@ -76,14 +76,11 @@
 			bToken := tokenManager.getBearerToken()
 			Expect(bToken).To(Equal(token.AccessToken))
 			tokenManager.close()
-			//sleep to ensure tokenManager has closed.  t.close() is non blocking
-			time.Sleep(1500 * time.Millisecond)
 		}, 2)
 
 		It("should refresh when forced to", func() {
 
 			tokenManager = createTokenManager()
-
 			token := tokenManager.getToken()
 			Expect(token.AccessToken).ToNot(BeEmpty())
 
@@ -93,8 +90,6 @@
 			Expect(token).ToNot(Equal(token2))
 			Expect(token.AccessToken).ToNot(Equal(token2.AccessToken))
 			tokenManager.close()
-			//sleep to ensure tokenManager has closed.  t.close() is non blocking
-			time.Sleep(1500 * time.Millisecond)
 		}, 2)
 
 		It("should refresh in refresh interval", func(done Done) {
@@ -130,8 +125,6 @@
 			<-finished
 
 			tokenManager.close()
-			//sleep to ensure tokenManager has closed.  t.close() is non blocking
-			time.Sleep(1500 * time.Millisecond)
 			ts.Close()
 
 			close(done)
@@ -173,8 +166,6 @@
 			tokenManager.getToken()
 			<-finished
 			tokenManager.close()
-			//sleep to ensure tokenManager has closed.  t.close() is non blocking
-			time.Sleep(1500 * time.Millisecond)
 			ts.Close()
 			close(done)
 		}, 2)