     private var responseTime: Int = 0 // The time at which a response has currently been made
     
     // Current session state
-    var messageState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    var editedMessageState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    var channelState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    var editedChannelState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    
-    var inlineQueryState: ((InlineQuery, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    var chosenInlineQueryState: ((ChosenInlineResult, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    var callbackQueryState: ((CallbackQuery, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
-    
-    var sessionEndAction: ((TelegramBotSession) -> ())? // A command to be used when the session ends.
+    public var messageState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    public var editedMessageState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    public var channelState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    public var editedChannelState: ((Message, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    
+    public var inlineQueryState: ((InlineQuery, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    public var chosenInlineQueryState: ((ChosenInlineResult, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    public var callbackQueryState: ((CallbackQuery, TelegramBotSession) -> ())? // Used by the internal polling system to iterate over commands
+    
+    public var sessionEndAction: ((TelegramBotSession) -> ())? // A command to be used when the session ends.
     var actionQueue: [TelegramBotSessionAction] = [] // Any queued actions that need to be monitored.
     
     // Stored requests
-    var currentMessage: Message?
-    var lastSentMessage: Message?
+    public var currentMessage: Message?
+    public var lastSentMessage: Message?
     var lastDialog: String = ""                     // A way to use the last given piece of dialog as a delay timer for the next.
     var plusTimer: Int = 0                          // A way to allow sequentially stated delays to naturally stack up.
-    var wordsPerMinute: Int = 190                   // Used as an implicit timer for a set of dialog actions.
+    public var wordsPerMinute: Int = 190                   // Used as an implicit timer for a set of dialog actions.
     
     // Setup the session by passing a function that modifies itself with the required commands.
-    init(bot: Pelican, chat: Chat, data: NSCopying?, floodLimit: FloodLimit, setup: @escaping (TelegramBotSession) -> (), sessionEndAction: ((TelegramBotSession) -> ())? ) {
+    public init(bot: Pelican, chat: Chat, data: NSCopying?, floodLimit: FloodLimit, setup: @escaping (TelegramBotSession) -> (), sessionEndAction: ((TelegramBotSession) -> ())? ) {
         self.bot = bot
         self.chat = chat
         self.floodLimit = FloodLimit(clone: floodLimit) // A precaution to only copy the range values

    }
    
    // Resets the assistive timers
    func resetTimerAssists() {
        self.plusTimer = 0
        self.lastDialog = ""
    }

    }
    
    // Edits the text contents of a message in a delayed fashion.  A last sent message must be available.
    public func delayEdit(by: Int, message: String, markup: MarkupType? = nil, reply: Bool = false, parseMode: String = "", webPreview: Bool = false, disableNtf: Bool = false) {
        
        if lastSentMessage != nil {
            self.delay(by: by, stack: false, action: { session in
