 
 @objc public protocol AlarmManagerDelgate {
     func alarmManagerHasChangedAlarmingState(isActive alarm: Bool, urgent: Bool, snoozed: Bool)
-    //func alarmManagerSnoozeRemaining(snoozeTimeRemaining remaining: Int)
+}
+
+public protocol AudioCordinator {
+    var alarmManagerDelegates: [AlarmManagerDelgate] { get set }
+    func addAlarmManagerDelgate<T where T: AlarmManagerDelgate, T: Equatable>(delegate: T)
+    func removeAlarmManagerDelgate<T where T: AlarmManagerDelgate, T: Equatable>(delegate: T)
+    func startAlarmMonitor()
+    func endAlarmMonitor()
+    func stop()
+    func paly()
+    func pause()
+    func unmuteVolume()
+    func muteVolume()
+}
+
+public protocol Snoozable {
+    func snooze(forMiutes minutes : Int)
+    func updateSnoozeButtonText()
 }
 
 public class AlarmManager {

    
    private var mute : Bool = false
    
    public var snoozeText: String = "Snooze"
    
    private var active: Bool = false
    private var urgent: Bool = false
    
    private init() {
       // AlarmRule.snoozeSeconds(15)
    }
    
    deinit {

    public func presentSnoozePopup(forViewController viewController: UIViewController) {
        if AlarmRule.isSnoozed() {
            AlarmRule.disableSnooze()
            snoozeText = Constants.LocalizedString.snoozeLabel.localized
        } else {
            
            self.muteVolume()
            
            let alertController = UIAlertController(title: Constants.LocalizedString.snoozeLabel.localized, message: Constants.LocalizedString.snoozeMessage.localized, preferredStyle: .Alert)
            
            alertController.addAction(UIAlertAction(title: "30 \(Constants.LocalizedString.minutes.localized)",
                style: UIAlertActionStyle.Default,
                handler: {(alert: UIAlertAction!) in
                    
                    self.snooze(forMiutes: 30)
            }))
            alertController.addAction(UIAlertAction(title: "1 \(Constants.LocalizedString.hour.localized)",
                style: UIAlertActionStyle.Default,
                handler: {(alert: UIAlertAction!) in
                    
                    self.snooze(forMiutes: 60)
            }))
            alertController.addAction(UIAlertAction(title: "1 1/2 \(Constants.LocalizedString.hours.localized)",
                style: UIAlertActionStyle.Default,
                handler: {(alert: UIAlertAction!) in
                    
                    self.snooze(forMiutes: 90)
            }))
            alertController.addAction(UIAlertAction(title: "2 \(Constants.LocalizedString.hours.localized)",
                style: UIAlertActionStyle.Default,
                handler: {(alert: UIAlertAction!) in
                    
                    self.snooze(forMiutes: 120)
            }))
            alertController.addAction(UIAlertAction(title: Constants.LocalizedString.generalCancelLabel.localized
                ,
