         }
     }
     
-    public func startAdvertisingPeripheral() {
+    private func startAdvertisingPeripheral() {
         self.ensure(peripheralManagerHasState: .poweredOn) { result in
             switch result {
             case .error(let err): self.delegate?.clink(self, didCatchError: err)
             case .success: self.peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [self.serviceId]])
             }
+        }
+    }
+    
+    // MARK: - PUBLIC METHODS
+    
+    public func startScanningForPeers() {
+        self.startScaningForPeripherals(minRSSI: -100)
+        self.startAdvertisingPeripheral()
+    }
+    
+    public func stopScanningForPeers() {
+        if self.centralManager.isScanning {
+            self.centralManager.stopScan()
+        }
+        
+        if self.peripheralManager.isAdvertising {
+            self.peripheralManager.stopAdvertising()
         }
     }
     

    
    
    // MARK: - PROPERTIES
    
    weak public var delegate: ClinkDelegate? = nil
    weak public var peerManager: ClinkPeerManager? = nil

        }
    }
    
    private func startScaningForPeripherals(minRSSI: Int) {
        self.minRSSI = minRSSI
        
        guard !self.centralManager.isScanning else { return }
