         return keychain["accessToken"]
     }
 
+    private var refreshToken: String? {
+        return keychain["refreshToken"]
+    }
+
     private(set) var currentUser: RedditUser?
+
+    init(clientID: String = RedditServiceConfiguration.clientID) {
+        self.clientID = clientID
+    }
 
     func fetchUserInfo(credential: RedditCredential) -> Observable<RedditUser> {
         storeCredential(credential)

        let request = RedditAPI.UserRequest()
        return Session.shared.rx
            .response(request)
            .do(onNext: { user in
                self.currentUser = user
            })
    }



class RedditService {
    static let shared = RedditService()

    let clientID: String

    private var keychain: Keychain {
        let service = "\(Bundle.main.bundleIdentifier!).reddit"
