diff --git a/src/containers/editable-container.js b/src/containers/editable-container.js
index 84aa882..0594368 100644
--- a/src/containers/editable-container.js
+++ b/src/containers/editable-container.js
@@ -9,12 +9,16 @@ Applied as jQuery method.
 **/
 (function ($) {
 
-    var EditableContainer = function (element, options) {
+    var Popup = function (element, options) {
         this.init(element, options);
     };
+    
+    var Inline = function (element, options) {
+        this.init(element, options);
+    };    
 
     //methods
-    EditableContainer.prototype = {
+    Popup.prototype = {
         containerName: null, //tbd in child class
         innerCss: null, //tbd in child class
         init: function(element, options) {
@@ -48,7 +52,7 @@ Applied as jQuery method.
                         return;
                     } else {
                         //close all open containers (except one)
-                        EditableContainer.prototype.closeOthers(e.target);
+                        Popup.prototype.closeOthers(e.target);
                     }
                 });
                 
@@ -310,11 +314,12 @@ Applied as jQuery method.
         return this.each(function () {
             var $this = $(this),
             dataKey = 'editableContainer', 
-            data = $this.data(dataKey), 
-            options = typeof option === 'object' && option;
+            data = $this.data(dataKey),
+            options = typeof option === 'object' && option,
+            Constructor = (options.mode === 'inline') ? Inline : Popup;             
 
             if (!data) {
-                $this.data(dataKey, (data = new EditableContainer(this, options)));
+                $this.data(dataKey, (data = new Constructor(this, options)));
             }
 
             if (typeof option === 'string') { //call method 
@@ -323,8 +328,9 @@ Applied as jQuery method.
         });
     };     
 
-    //store constructor
-    $.fn.editableContainer.Constructor = EditableContainer;
+    //store constructors
+    $.fn.editableContainer.Popup = Popup;
+    $.fn.editableContainer.Inline = Inline;
 
     //defaults
     $.fn.editableContainer.defaults = {
@@ -363,7 +369,25 @@ Applied as jQuery method.
         @default 'cancel'
         @since 1.1.1
         **/        
-        onblur: 'cancel'
+        onblur: 'cancel',
+        
+        /**
+        Animation speed (inline mode)
+        @property anim 
+        @type string
+        @default 'fast'
+        **/        
+        anim: 'fast',
+        
+        /**
+        Mode of editable, can be `popup` or `inline` 
+        
+        @property mode 
+        @type string         
+        @default 'popup'
+        @since 1.4.0        
+        **/        
+        mode: 'popup'        
     };
 
     /* 
diff --git a/src/containers/editable-inline.js b/src/containers/editable-inline.js
index 05800dc..a9ce758 100644
--- a/src/containers/editable-inline.js
+++ b/src/containers/editable-inline.js
@@ -3,9 +3,10 @@
 * ---------------------
 */
 (function ($) {
-
+    
+    //copy prototype from EditableContainer
     //extend methods
-    $.extend($.fn.editableContainer.Constructor.prototype, {
+    $.extend($.fn.editableContainer.Inline.prototype, $.fn.editableContainer.Popup.prototype, {
         containerName: 'editableform',
         innerCss: null,
                  
@@ -51,10 +52,4 @@
         } 
     });
 
-    //defaults
-    $.fn.editableContainer.defaults = $.extend({}, $.fn.editableContainer.defaults, {
-        anim: 'fast'
-    });    
-
-
 }(window.jQuery));
\ No newline at end of file
diff --git a/src/containers/editable-popover.js b/src/containers/editable-popover.js
index 127ca4c..ab540f2 100644
--- a/src/containers/editable-popover.js
+++ b/src/containers/editable-popover.js
@@ -6,7 +6,7 @@
 (function ($) {
 
     //extend methods
-    $.extend($.fn.editableContainer.Constructor.prototype, {
+    $.extend($.fn.editableContainer.Popup.prototype, {
         containerName: 'popover',
         //for compatibility with bootstrap <= 2.2.1 (content inserted into <p> instead of directly .popover-content) 
         innerCss: $($.fn.popover.defaults.template).find('p').length ? '.popover-content p' : '.popover-content',
@@ -82,11 +82,4 @@
         }            
     });
 
-    //defaults
-    /*
-    $.fn.editableContainer.defaults = $.extend({}, $.fn.popover.defaults, $.fn.editableContainer.defaults, {
-        
-    });
-    */    
-
 }(window.jQuery));
\ No newline at end of file
diff --git a/src/containers/editable-poshytip.js b/src/containers/editable-poshytip.js
index 3488ec9..d41f1db 100644
--- a/src/containers/editable-poshytip.js
+++ b/src/containers/editable-poshytip.js
@@ -6,7 +6,7 @@
 (function ($) {
     
     //extend methods
-    $.extend($.fn.editableContainer.Constructor.prototype, {
+    $.extend($.fn.editableContainer.Popup.prototype, {
         containerName: 'poshytip',
         innerCss: 'div.tip-inner',
         
diff --git a/src/containers/editable-tooltip.js b/src/containers/editable-tooltip.js
index 4fbc842..83bebb9 100644
--- a/src/containers/editable-tooltip.js
+++ b/src/containers/editable-tooltip.js
@@ -6,7 +6,7 @@
 (function ($) {
     
     //extend methods
-    $.extend($.fn.editableContainer.Constructor.prototype, {
+    $.extend($.fn.editableContainer.Popup.prototype, {
         containerName: 'tooltip',
         innerCss: '.ui-tooltip-content', 
         
@@ -109,12 +109,4 @@
         }                 
     });
     
-    //defaults
-    /*
-    $.fn.editableContainer.defaults = $.extend({}, $.fn.tooltip.defaults, $.fn.editableContainer.defaults, {
-        items: '*',
-        content: ' ',
-    });
-    */
-    
 }(window.jQuery));
\ No newline at end of file
diff --git a/src/element/editable-element.js b/src/element/editable-element.js
index 762c25b..a458ba6 100644
--- a/src/element/editable-element.js
+++ b/src/element/editable-element.js
@@ -554,13 +554,13 @@ Makes editable any HTML element on the page. Applied as jQuery method.
         _Parameters:_  
         
         * `value` current value to be displayed
-        * `response` server response (if display called after ajax submit), since 1.3.1
+        * `response` server response (if display called after ajax submit), since 1.4.0
          
         For **inputs with source** (select, checklist) parameters are different:  
           
         * `value` current value to be displayed
         * `sourceData` array of items for current input (e.g. dropdown items) 
-        * `response` server response (if display called after ajax submit), since 1.3.1
+        * `response` server response (if display called after ajax submit), since 1.4.0
                   
         To get currently selected items use `$.fn.editableutils.itemsByValue(value, sourceData)`.
         
diff --git a/src/inputs/list.js b/src/inputs/list.js
index 4e28ae6..e5b7ba9 100644
--- a/src/inputs/list.js
+++ b/src/inputs/list.js
@@ -248,7 +248,7 @@ List - abstract class for inputs that have source option loaded from js array or
         
         If **string** - considered ajax url to load items. In that case results will be cached for fields with the same source and name. See also `sourceCache` option.
           
-        If **function**, it should return data in format above (since 1.3.1).
+        If **function**, it should return data in format above (since 1.4.0).
 		
         @property source 
         @type string | array | object | function
@@ -285,4 +285,4 @@ List - abstract class for inputs that have source option loaded from js array or
 
     $.fn.editabletypes.list = List;      
 
-}(window.jQuery));
\ No newline at end of file
+}(window.jQuery));
diff --git a/test/loader.js b/test/loader.js
index 5ec827a..327d64e 100644
--- a/test/loader.js
+++ b/test/loader.js
@@ -20,7 +20,11 @@ define(function () {
                     init: function(require) {
                         loadCss(require.toUrl("./editable-container.css")); 
                     }                  
-                },   
+                },  
+                
+                //inline container
+                'containers/editable-inline': ['containers/editable-container'],                
+                 
                 'element/editable-element': {
                     deps: ['require'], //here should be dynamically added container
                     init: function(require) {
@@ -55,11 +59,12 @@ define(function () {
                     }                
                 },
                 'editable-form/editable-form-bootstrap': [
-                'editable-form/editable-form', 
-                'bootstrap/js/bootstrap'
+                    'editable-form/editable-form', 
+                    'bootstrap/js/bootstrap'
                 ],
-                'containers/editable-popover': ['containers/editable-container', 
-                'bootstrap/js/bootstrap'
+                'containers/editable-popover': [
+                    'containers/editable-inline', 
+                    'bootstrap/js/bootstrap'
                 ],
                 'inputs/date/date': {
                     deps: ['require', 
@@ -79,19 +84,20 @@ define(function () {
                     }                
                 },  
                 'editable-form/editable-form-jqueryui': [
-                'editable-form/editable-form', 
-                'jqueryui/js/jquery-ui-1.9.1.custom'
+                    'editable-form/editable-form', 
+                    'jqueryui/js/jquery-ui-1.9.1.custom'
                 ],            
-                'containers/editable-tooltip': ['containers/editable-container', 
-                'jqueryui/js/jquery-ui-1.9.1.custom'
+                'containers/editable-tooltip': [
+                    'containers/editable-inline', 
+                    'jqueryui/js/jquery-ui-1.9.1.custom'
                 ],                      
                 'inputs/dateui/dateui': ['inputs/abstract'],
 
                 //plain
                 //'inputs/dateui/dateui': ['inputs/abstract', 'inputs/date/bootstrap-datepicker/js/bootstrap-datepicker'],
                 'containers/editable-poshytip': [ 
-                'containers/editable-container', 
-                'poshytip/jquery.poshytip'
+                    'containers/editable-inline', 
+                    'poshytip/jquery.poshytip'
                 ],
                 'poshytip/jquery.poshytip': {
                     deps: ['require'],
@@ -105,9 +111,7 @@ define(function () {
                         loadCss(require.toUrl("../css/redmond/jquery-ui-1.9.1.custom.css")); 
                     } 
                 },
-
-                //inline container
-                'containers/editable-inline': ['containers/editable-container'],
+                                         
 
                 //inputs-ext
                 'inputs-ext/address/address': {
@@ -126,17 +130,17 @@ define(function () {
                 //bootstrap
                 shim['editable-form/editable-form'].deps.push('inputs/date/date');
                 shim['element/editable-element'].deps.push('editable-form/editable-form-bootstrap');
-                shim['element/editable-element'].deps.push(c === 'popup' ? 'containers/editable-popover' : 'containers/editable-inline');
+                shim['element/editable-element'].deps.push('containers/editable-popover');
             } else if(f === 'jqueryui') {
                 //jqueryui
                 shim['editable-form/editable-form'].deps.push('inputs/dateui/dateui');
                 shim['element/editable-element'].deps.push('editable-form/editable-form-jqueryui');
-                shim['element/editable-element'].deps.push(c === 'popup' ? 'containers/editable-tooltip' : 'containers/editable-inline');
+                shim['element/editable-element'].deps.push('containers/editable-tooltip');
             } else {    
                 //plain
                 shim['editable-form/editable-form'].deps.push('inputs/dateui/dateui');
                 shim['inputs/dateui/dateui'].push('inputs/dateui/jquery-ui-datepicker/js/jquery-ui-1.9.1.custom');
-                shim['element/editable-element'].deps.push(c === 'popup' ? 'containers/editable-poshytip' : 'containers/editable-inline');        
+                shim['element/editable-element'].deps.push('containers/editable-poshytip');        
             }            
             
             
diff --git a/test/main.js b/test/main.js
index d15b23b..f9e3e00 100644
--- a/test/main.js
+++ b/test/main.js
@@ -19,7 +19,8 @@ require(["loader", jqurl], function(loader) {
     function() {
         //disable effects
         $.fx.off = true;
-        $.support.transition = false;           
+        $.support.transition = false;
+        $.fn.editable.defaults.mode = params.c === 'inline' ? 'inline' : 'popup';           
         
         QUnit.load();
         QUnit.start();
diff --git a/test/unit/common.js b/test/unit/common.js
index ed95e0f..feb1a7a 100644
--- a/test/unit/common.js
+++ b/test/unit/common.js
@@ -64,7 +64,7 @@
       
       test("container's title and placement from json options", function () {
         //do not test inline  
-        if($.fn.editableContainer.Constructor.prototype.containerName === 'editableform') {
+        if($.fn.editable.defaults.mode === 'inline') {
             expect(0);
             return;
         }
@@ -81,7 +81,7 @@
         ok(p.is(':visible'), 'popover shown');   
 
         //todo: for jqueryui phantomjs calcs wrong position. Need investigation
-        if(!$.browser.webkit && $.fn.editableContainer.Constructor.prototype.containerName !== 'tooltip') {
+        if(!$.browser.webkit && e.data('editableContainer').containerName !== 'tooltip') {
             ok(p.offset().top > e.offset().top, 'placement ok');
         }
         
@@ -520,5 +520,23 @@
         
       });          
            
+     test("mode: popup / inline", function () {
+        var e = $('<a href="#" id="a"></a>').appendTo('#qunit-fixture').editable({
+            mode: 'popup'
+        }),
+        e1 = $('<a href="#" id="a1"></a>').appendTo('#qunit-fixture').editable({
+            mode: 'inline'
+        });        
+        
+        e.click(); 
+        var p = tip(e);                       
+        ok(p.is(':visible'), 'popup visible');
+        ok(!p.hasClass('editable-inline'), 'no inline class');
+
+        e1.click(); 
+        p = tip(e1);                       
+        ok(p.is(':visible'), 'inline visible visible');
+        ok(p.hasClass('editable-inline'), 'has inline class');
+    }); 
           
 }(jQuery));  
\ No newline at end of file