diff --git a/Configuration/UserConfig.cs b/Configuration/UserConfig.cs
index 44563846..a6a90cdf 100644
--- a/Configuration/UserConfig.cs
+++ b/Configuration/UserConfig.cs
@@ -18,6 +18,7 @@ sealed class UserConfig{
         public Point WindowLocation { get; set; }
         public Size WindowSize { get; set; }
 
+        public TweetNotification.Duration NotificationDuration { get; set; }
         public TweetNotification.Position NotificationPosition { get; set; }
         public Point CustomNotificationPosition { get; set; }
         public int NotificationEdgeDistance { get; set; }
@@ -44,6 +45,7 @@ private UserConfig(string file){
 
             IsMaximized = true;
             WindowLocation = new Point(32000,32000);
+            NotificationDuration = TweetNotification.Duration.Medium;
             NotificationPosition = TweetNotification.Position.TopRight;
             CustomNotificationPosition = new Point(32000,32000);
             NotificationEdgeDistance = 8;
diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 0d35adc7..60833f16 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -11,7 +11,7 @@
 using System.Drawing;
 
 namespace TweetDick.Core{
-    public partial class FormBrowser : Form{
+    partial class FormBrowser : Form{
         private static UserConfig Config{
             get{
                 return Program.UserConfig;
@@ -126,8 +126,8 @@ public void OpenAbout(){
             }
         }
 
-        public void OnTweetPopup(string tweetHtml, string tweetColumn){
-            notification.ShowNotification(new TweetNotification(tweetHtml));
+        public void OnTweetPopup(TweetNotification tweet){
+            notification.ShowNotification(tweet);
         }
     }
 }
\ No newline at end of file
diff --git a/Core/FormNotification.cs b/Core/FormNotification.cs
index bb1f6138..24c3c5b6 100644
--- a/Core/FormNotification.cs
+++ b/Core/FormNotification.cs
@@ -50,7 +50,7 @@ private void LoadNextNotification(){
             browser.LoadHtml(tweet.GenerateHtml(),"http://tweetdeck.twitter.com/");
 
             timer.Stop();
-            timer.Interval = 5000;
+            timer.Interval = tweet.GetDisplayDuration(Program.UserConfig.NotificationDuration);
             timer.Start();
         }
 
diff --git a/Core/Handling/TweetDeckBridge.cs b/Core/Handling/TweetDeckBridge.cs
index 0dc6ffc6..a250e95b 100644
--- a/Core/Handling/TweetDeckBridge.cs
+++ b/Core/Handling/TweetDeckBridge.cs
@@ -24,9 +24,9 @@ public void OpenSettingsMenu(){
             });
         }
 
-        public void OnTweetPopup(string tweetHtml, string tweetColumn){
+        public void OnTweetPopup(string tweetHtml, int tweetCharacters){
             form.InvokeSafe(() => {
-                form.OnTweetPopup(tweetHtml,tweetColumn);
+                form.OnTweetPopup(new TweetNotification(tweetHtml,tweetCharacters));
             });
         }
 
diff --git a/Core/Handling/TweetNotification.cs b/Core/Handling/TweetNotification.cs
index c26f1ac4..ea48d9c5 100644
--- a/Core/Handling/TweetNotification.cs
+++ b/Core/Handling/TweetNotification.cs
@@ -1,4 +1,5 @@
-using System.Text;
+using System;
+using System.Text;
 
 namespace TweetDick.Core.Handling{
     sealed class TweetNotification{
@@ -17,10 +18,29 @@ public enum Position{
             TopLeft, TopRight, BottomLeft, BottomRight, Custom
         }
 
-        private readonly string html;
+        public enum Duration{
+            Short, Medium, Long, VeryLong
+        }
 
-        public TweetNotification(string html){
+        private readonly string html;
+        private readonly int characters;
+
+        public TweetNotification(string html, int characters){
             this.html = html;
+            this.characters = characters;
+        }
+
+        public int GetDisplayDuration(Duration modifier){
+            int multiplier;
+
+            switch(modifier){
+                case Duration.Short: multiplier = 40; break;
+                case Duration.Long: multiplier = 60; break;
+                case Duration.VeryLong: multiplier = 75; break;
+                default: multiplier = 50; break;
+            }
+
+            return Math.Max(2500,multiplier*characters);
         }
 
         public string GenerateHtml(){
diff --git a/Core/Other/FormSettings.Designer.cs b/Core/Other/FormSettings.Designer.cs
index e6659039..a8adb681 100644
--- a/Core/Other/FormSettings.Designer.cs
+++ b/Core/Other/FormSettings.Designer.cs
@@ -31,12 +31,20 @@ private void InitializeComponent() {
             this.radioLocBL = new System.Windows.Forms.RadioButton();
             this.radioLocTR = new System.Windows.Forms.RadioButton();
             this.radioLocTL = new System.Windows.Forms.RadioButton();
+            this.groupNotificationDuration = new System.Windows.Forms.GroupBox();
+            this.radioDurVeryLong = new System.Windows.Forms.RadioButton();
+            this.radioDurLong = new System.Windows.Forms.RadioButton();
+            this.radioDurMedium = new System.Windows.Forms.RadioButton();
+            this.radioDurShort = new System.Windows.Forms.RadioButton();
             this.groupNotificationLocation.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.trackBarEdgeDistance)).BeginInit();
+            this.groupNotificationDuration.SuspendLayout();
             this.SuspendLayout();
             // 
             // groupNotificationLocation
             // 
+            this.groupNotificationLocation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left)));
             this.groupNotificationLocation.Controls.Add(this.labelEdgeDistance);
             this.groupNotificationLocation.Controls.Add(this.trackBarEdgeDistance);
             this.groupNotificationLocation.Controls.Add(this.radioLocCustom);
@@ -46,7 +54,7 @@ private void InitializeComponent() {
             this.groupNotificationLocation.Controls.Add(this.radioLocTL);
             this.groupNotificationLocation.Location = new System.Drawing.Point(13, 13);
             this.groupNotificationLocation.Name = "groupNotificationLocation";
-            this.groupNotificationLocation.Size = new System.Drawing.Size(149, 217);
+            this.groupNotificationLocation.Size = new System.Drawing.Size(148, 217);
             this.groupNotificationLocation.TabIndex = 0;
             this.groupNotificationLocation.TabStop = false;
             this.groupNotificationLocation.Text = "Notification Location";
@@ -70,7 +78,7 @@ private void InitializeComponent() {
             this.trackBarEdgeDistance.Maximum = 40;
             this.trackBarEdgeDistance.Minimum = 8;
             this.trackBarEdgeDistance.Name = "trackBarEdgeDistance";
-            this.trackBarEdgeDistance.Size = new System.Drawing.Size(137, 45);
+            this.trackBarEdgeDistance.Size = new System.Drawing.Size(136, 45);
             this.trackBarEdgeDistance.SmallChange = 2;
             this.trackBarEdgeDistance.TabIndex = 5;
             this.trackBarEdgeDistance.TickFrequency = 2;
@@ -137,11 +145,73 @@ private void InitializeComponent() {
             this.radioLocTL.UseVisualStyleBackColor = true;
             this.radioLocTL.CheckedChanged += new System.EventHandler(this.radioLoc_CheckedChanged);
             // 
+            // groupNotificationDuration
+            // 
+            this.groupNotificationDuration.Controls.Add(this.radioDurVeryLong);
+            this.groupNotificationDuration.Controls.Add(this.radioDurLong);
+            this.groupNotificationDuration.Controls.Add(this.radioDurMedium);
+            this.groupNotificationDuration.Controls.Add(this.radioDurShort);
+            this.groupNotificationDuration.Location = new System.Drawing.Point(167, 13);
+            this.groupNotificationDuration.Name = "groupNotificationDuration";
+            this.groupNotificationDuration.Size = new System.Drawing.Size(148, 118);
+            this.groupNotificationDuration.TabIndex = 1;
+            this.groupNotificationDuration.TabStop = false;
+            this.groupNotificationDuration.Text = "Notification Duration";
+            // 
+            // radioDurVeryLong
+            // 
+            this.radioDurVeryLong.AutoSize = true;
+            this.radioDurVeryLong.Location = new System.Drawing.Point(6, 92);
+            this.radioDurVeryLong.Name = "radioDurVeryLong";
+            this.radioDurVeryLong.Size = new System.Drawing.Size(73, 17);
+            this.radioDurVeryLong.TabIndex = 3;
+            this.radioDurVeryLong.TabStop = true;
+            this.radioDurVeryLong.Text = "Very Long";
+            this.radioDurVeryLong.UseVisualStyleBackColor = true;
+            this.radioDurVeryLong.CheckedChanged += new System.EventHandler(this.radioDur_CheckedChanged);
+            // 
+            // radioDurLong
+            // 
+            this.radioDurLong.AutoSize = true;
+            this.radioDurLong.Location = new System.Drawing.Point(6, 68);
+            this.radioDurLong.Name = "radioDurLong";
+            this.radioDurLong.Size = new System.Drawing.Size(49, 17);
+            this.radioDurLong.TabIndex = 2;
+            this.radioDurLong.TabStop = true;
+            this.radioDurLong.Text = "Long";
+            this.radioDurLong.UseVisualStyleBackColor = true;
+            this.radioDurLong.CheckedChanged += new System.EventHandler(this.radioDur_CheckedChanged);
+            // 
+            // radioDurMedium
+            // 
+            this.radioDurMedium.AutoSize = true;
+            this.radioDurMedium.Location = new System.Drawing.Point(6, 44);
+            this.radioDurMedium.Name = "radioDurMedium";
+            this.radioDurMedium.Size = new System.Drawing.Size(62, 17);
+            this.radioDurMedium.TabIndex = 1;
+            this.radioDurMedium.TabStop = true;
+            this.radioDurMedium.Text = "Medium";
+            this.radioDurMedium.UseVisualStyleBackColor = true;
+            this.radioDurMedium.CheckedChanged += new System.EventHandler(this.radioDur_CheckedChanged);
+            // 
+            // radioDurShort
+            // 
+            this.radioDurShort.AutoSize = true;
+            this.radioDurShort.Location = new System.Drawing.Point(6, 20);
+            this.radioDurShort.Name = "radioDurShort";
+            this.radioDurShort.Size = new System.Drawing.Size(50, 17);
+            this.radioDurShort.TabIndex = 0;
+            this.radioDurShort.TabStop = true;
+            this.radioDurShort.Text = "Short";
+            this.radioDurShort.UseVisualStyleBackColor = true;
+            this.radioDurShort.CheckedChanged += new System.EventHandler(this.radioDur_CheckedChanged);
+            // 
             // FormSettings
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(284, 242);
+            this.ClientSize = new System.Drawing.Size(328, 242);
+            this.Controls.Add(this.groupNotificationDuration);
             this.Controls.Add(this.groupNotificationLocation);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
             this.MaximizeBox = false;
@@ -153,6 +223,8 @@ private void InitializeComponent() {
             this.groupNotificationLocation.ResumeLayout(false);
             this.groupNotificationLocation.PerformLayout();
             ((System.ComponentModel.ISupportInitialize)(this.trackBarEdgeDistance)).EndInit();
+            this.groupNotificationDuration.ResumeLayout(false);
+            this.groupNotificationDuration.PerformLayout();
             this.ResumeLayout(false);
 
         }
@@ -167,5 +239,10 @@ private void InitializeComponent() {
         private System.Windows.Forms.RadioButton radioLocTL;
         private System.Windows.Forms.Label labelEdgeDistance;
         private System.Windows.Forms.TrackBar trackBarEdgeDistance;
+        private System.Windows.Forms.GroupBox groupNotificationDuration;
+        private System.Windows.Forms.RadioButton radioDurVeryLong;
+        private System.Windows.Forms.RadioButton radioDurLong;
+        private System.Windows.Forms.RadioButton radioDurMedium;
+        private System.Windows.Forms.RadioButton radioDurShort;
     }
 }
\ No newline at end of file
diff --git a/Core/Other/FormSettings.cs b/Core/Other/FormSettings.cs
index aeea7457..f87638cf 100644
--- a/Core/Other/FormSettings.cs
+++ b/Core/Other/FormSettings.cs
@@ -4,7 +4,7 @@
 using TweetDick.Core.Handling;
 
 namespace TweetDick.Core.Other{
-    public partial class FormSettings : Form{
+    partial class FormSettings : Form{
         private static UserConfig Config{
             get{
                 return Program.UserConfig;
@@ -32,6 +32,13 @@ public FormSettings(FormBrowser browserForm){
                 case TweetNotification.Position.BottomRight: radioLocBR.Checked = true; break;
             }
 
+            switch(Config.NotificationDuration){
+                case TweetNotification.Duration.Short: radioDurShort.Checked = true; break;
+                case TweetNotification.Duration.Medium: radioDurMedium.Checked = true; break;
+                case TweetNotification.Duration.Long: radioDurLong.Checked = true; break;
+                case TweetNotification.Duration.VeryLong: radioDurVeryLong.Checked = true; break;
+            }
+
             trackBarEdgeDistance.Value = Config.NotificationEdgeDistance;
             notification.HideNotification();
         }
@@ -61,5 +68,12 @@ private void trackBarEdgeDistance_ValueChanged(object sender, EventArgs e){
             Config.NotificationEdgeDistance = trackBarEdgeDistance.Value;
             notification.ShowNotificationForSettings();
         }
+
+        private void radioDur_CheckedChanged(object sender, EventArgs e){
+            if (radioDurShort.Checked)Config.NotificationDuration = TweetNotification.Duration.Short;
+            else if (radioDurMedium.Checked)Config.NotificationDuration = TweetNotification.Duration.Medium;
+            else if (radioDurLong.Checked)Config.NotificationDuration = TweetNotification.Duration.Long;
+            else if (radioDurVeryLong.Checked)Config.NotificationDuration = TweetNotification.Duration.VeryLong;
+        }
     }
 }
diff --git a/Resources/code.js b/Resources/code.js
index 9e389615..c0255a9b 100644
--- a/Resources/code.js
+++ b/Resources/code.js
@@ -103,7 +103,7 @@
     var html = $(tweet.outerHTML);
     html.find("footer:first").remove();
     
-    $TD.onTweetPopup(html.html(),""); // TODO
+    $TD.onTweetPopup(html.html(),html.find(".js-tweet-text:first").text().length); // TODO column & remove pic links from text()
   };
   
   //