 
 class FeedbackViewController: UIViewController, FeedbackCollector {}
 
-class MailSender: NSObject, Sender {}
+class MailSender: Sender {}
 
+class SystemLogCollector: LogCollector {}
+
+

    let configuration: Configuration
    weak var delegate: PinpointKitDelegate?
    
    init(configuration: Configuration = Configuration.defaultConfiguration, delegate: PinpointKitDelegate? = nil)  {
        self.configuration = configuration
        self.delegate = delegate
    }

    func pinpointKit(pinpointKit: PinpointKit, didFinishWithResult: Bool)
}

// Default protocol extension to make all functions in the delegate optional.
extension PinpointKitDelegate {
    func pinpointKit(pinpointKit: PinpointKit, willShowFeedbackCollector: FeedbackCollector) {}
    func pinpointKit(pinpointKit: PinpointKit, didShowFeedbackCollector: FeedbackCollector) {}
    
    func pinpointKit(pinpointKit: PinpointKit, willSendFeedback: Feedback) {}
    func pinpointKit(pinpointKit: PinpointKit, didSendFeedback: Feedback) {}
    
    func pinpointKit(pinpointKit: PinpointKit, willShowScreenshotEditor: ScreenshotEditor) {}
    func pinpointKit(pinpointKit: PinpointKit, didShowScreenshotEditor: ScreenshotEditor) {}
    
    func pinpointKit(pinpointKit: PinpointKit, didFinishWithResult: Bool) {}
}

protocol Sender {}

protocol LogCollector {}

struct Feedback {

