diff --git a/package.json b/package.json
index 208fffd..f6da3bd 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
   "title": "X-editable",
   "description": "In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery",
   "version": "1.0.0",
-  "homepage": "https://github.com/vitalets/x-editable",
+  "homepage": "http://github.com/vitalets/x-editable",
   "author": {
     "name": "Vitaliy Potapov",
     "email": "noginsk@rambler.ru"
diff --git a/src/containers/editable-container.js b/src/containers/editable-container.js
index 7bb017b..784e07d 100644
--- a/src/containers/editable-container.js
+++ b/src/containers/editable-container.js
@@ -45,10 +45,10 @@ Applied as jQuery method.
             return this.$form;
         },        
 
-        /**
+        /*
         Returns jquery object of container
         @method tip()
-        **/         
+        */         
         tip: function() {
             return this.container().$tip;
         },
@@ -82,10 +82,10 @@ Applied as jQuery method.
             this.call('hide'); 
         },
 
-        /**
+        /*
         Updates the position of container when content changed.
         @method setPosition()
-        **/       
+        */       
         setPosition: function() {
             //tbd in child class
         },
@@ -113,8 +113,17 @@ Applied as jQuery method.
             @event save 
             @param {Object} event event object
             @param {Object} params additional params
-                @param {mixed} params.newValue submitted value
-                @param {Object} params.response ajax response
+            @param {mixed} params.newValue submitted value
+            @param {Object} params.response ajax response
+            @example
+            $('#username').on('save', function(e, params) {
+                //assuming server response: '{success: true}'
+                if(params.response && params.response.success) {
+                    alert('value ' + params.newValue + ' saved!');
+                } else {
+                    alert('error!'); 
+                } 
+            });
             **/             
             this.$element.triggerHandler('save', params);
         },
@@ -141,7 +150,19 @@ Applied as jQuery method.
 
     };
 
-    //jQuery plugin definition
+    /**
+    jQuery method to initialize editableContainer.
+    
+    @method $().editableContainer(options)
+    @params {Object} options
+    @example
+    $('#edit').editableContainer({
+        type: 'text',
+        url: 'post.php',
+        pk: 1,
+        value: 'hello'
+    });
+    **/  
     $.fn.editableContainer = function (option) {
         var args = arguments;
         return this.each(function () {
diff --git a/src/editable-form/editable-form.js b/src/editable-form/editable-form.js
index 8be2e92..172581c 100644
--- a/src/editable-form/editable-form.js
+++ b/src/editable-form/editable-form.js
@@ -271,7 +271,7 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'.
         Url for submit
 
         @property url 
-        @type string|object|array
+        @type string|function
         @default null
         **/        
         url:null,
@@ -284,7 +284,7 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'.
         **/          
         params:null,
         /**
-        Name of field. Will be submitted on server. Can be taken from id attribute.
+        Name of field. Will be submitted on server. Can be taken from <code>id</code> attribute
 
         @property name 
         @type string
@@ -301,7 +301,7 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'.
         pk: null,
         /**
         Initial value. If not defined - will be taken from element's content.
-        For <i>select</i> type should be defined (as it is ID of shown text).
+        For __select__ type should be defined (as it is ID of shown text).
 
         @property value 
         @type string|object
@@ -309,7 +309,7 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'.
         **/        
         value: null,
         /**
-        Strategy for sending data on server. Can be auto|always|never.
+        Strategy for sending data on server. Can be <code>auto|always|never</code>.
         When 'auto' data will be sent on server only if pk defined, otherwise new value will be stored in element.
 
         @property send 
diff --git a/src/element/editable-element.js b/src/element/editable-element.js
index 9defd03..6317ff3 100644
--- a/src/element/editable-element.js
+++ b/src/element/editable-element.js
@@ -89,7 +89,7 @@ Makes editable any HTML element on the page. Applied as jQuery method.
                 }
                /**        
                Fired each time when element's text is rendered. Occurs on initialization and on each update of value.
-               Can be used for customizing display of value.
+               Can be used for display customization.
                               
                @event render 
                @param {Object} event event object
@@ -296,15 +296,15 @@ Makes editable any HTML element on the page. Applied as jQuery method.
         
         /**
         Sets new value of editable
-        @method setValue(v, convertStr)
-        @param {mixed} v new value 
+        @method setValue(value, convertStr)
+        @param {mixed} value new value 
         @param {boolean} convertStr wether to convert value from string to internal format        
         **/         
-        setValue: function(v, convertStr) {
+        setValue: function(value, convertStr) {
             if(convertStr) {
-                this.value = this.input.str2value(v);
+                this.value = this.input.str2value(value);
             } else {
-                this.value = v;
+                this.value = value;
             }
             if(this.container) {
                 this.container.option('value', this.value);
@@ -337,7 +337,7 @@ Makes editable any HTML element on the page. Applied as jQuery method.
         var result = {}, args = arguments, datakey = 'editable';
         switch (option) {
             /**
-            Runs client-side validation for all editables in jquery array
+            Runs client-side validation for all matched editables
             
             @method validate()
             @returns {Object} validation errors map
@@ -345,8 +345,8 @@ Makes editable any HTML element on the page. Applied as jQuery method.
             $('#username, #fullname').editable('validate');
             // possible result:
             {
-            username: "username is requied",
-            fullname: "fullname should be minimum 3 letters length"
+              username: "username is requied",
+              fullname: "fullname should be minimum 3 letters length"
             }
             **/             
             case 'validate':
@@ -381,14 +381,14 @@ Makes editable any HTML element on the page. Applied as jQuery method.
 
             /**  
             This method collects values from several editable elements and submit them all to server. 
-            It is designed mainly for creating new records. 
+            It is designed mainly for <a href="#newrecord">creating new records</a>. 
             
             @method submit(options)
             @param {object} options 
             @param {object} options.url url to submit data 
             @param {object} options.data additional data to submit
-            @param {function} options.error error handler (called on both client-side and server-side validation errors)
-            @param {function} options.success success handler 
+            @param {function} options.error(obj) error handler (called on both client-side and server-side validation errors)
+            @param {function} options.success(obj) success handler 
             @returns {Object} jQuery object
             **/            
             case 'submit':  //collects value, validate and submit to server for creating new record
@@ -452,7 +452,7 @@ Makes editable any HTML element on the page. Applied as jQuery method.
         Type of input. Can be <code>text|textarea|select|date</code>
 
         @property type 
-        @type String
+        @type string
         @default 'text'
         **/
         type: 'text',        
@@ -465,7 +465,15 @@ Makes editable any HTML element on the page. Applied as jQuery method.
         **/         
         disabled: false,
         /**
-        How to toggle editable. Can be click|manual.
+        How to toggle editable. Can be <code>click|manual</code>. 
+        When set to <code>manual</code> you should manually call <code>show/hide</code> methods of editable.  
+        Note: if you are calling <code>show</code> on **click** event you need to apply <code>e.stopPropagation()</code> because container has behavior to hide on any click outside.
+        
+        @example
+        $('#edit-button').click(function(e) {
+            e.stopPropagation();
+            $('#username').editable('toggle');
+        });
 
         @property toggle 
         @type string
@@ -481,10 +489,10 @@ Makes editable any HTML element on the page. Applied as jQuery method.
         **/         
         emptytext: 'Empty',
         /**
-        Allows to automatically set element's text based on it's value. Usefull for select and date.
-        For example, if dropdown list is <code>{1: 'a', 2: 'b'}</code> and elements value set to <code>1</code>, it's html will be automatically set to <code>a</code>.
-        Can be auto|always|never. <code>auto</code> means text will be set only if element is empty.
-        <code>always|never</code> means always(never) try to set element's text.
+        Allows to automatically set element's text based on it's value. Can be <code>auto|always|never</code>. Usefull for select and date.
+        For example, if dropdown list is <code>{1: 'a', 2: 'b'}</code> and element's value set to <code>1</code>, it's html will be automatically set to <code>'a'</code>.  
+        <code>auto</code> - text will be automatically set only if element is empty.  
+        <code>always|never</code> - always(never) try to set element's text.
 
         @property autotext 
         @type string
diff --git a/src/inputs/abstract.js b/src/inputs/abstract.js
index 9acc473..b0320cd 100644
--- a/src/inputs/abstract.js
+++ b/src/inputs/abstract.js
@@ -115,7 +115,7 @@ To create your own input you should inherit from this class.
         
     Abstract.defaults = {  
         /**
-        HTML template of input
+        HTML template of input. Normally you should not change it.
 
         @property tpl 
         @type string
@@ -127,7 +127,7 @@ To create your own input you should inherit from this class.
 
         @property inputclass 
         @type string
-        @default 'span2'
+        @default span2
         **/         
         inputclass: 'span2',
         /**
diff --git a/src/inputs/date/date.js b/src/inputs/date/date.js
index 4a71848..59052dc 100644
--- a/src/inputs/date/date.js
+++ b/src/inputs/date/date.js
@@ -1,7 +1,25 @@
 /**
-* date
-* based on fork: https://github.com/vitalets/bootstrap-datepicker
-*/
+Bootstrap-datepicker.  
+Description and examples: http://vitalets.github.com/bootstrap-datepicker.  
+For localization you can include js file from here: https://github.com/eternicode/bootstrap-datepicker/tree/master/js/locales
+
+@class date
+@extends abstract
+@example
+<a href="#" id="dob" data-type="date" data-pk="1" data-url="post.php" data-original-title="Select date">15/05/1984</a>
+<script>
+$(function(){
+    $('#dob').editable({
+        format: 'yyyy-mm-dd',    
+        viewformat: 'dd/mm/yyyy',    
+        datepicker: {
+                weekStart: 1
+           }
+        }
+    });
+});
+</script>
+**/
 (function ($) {
 
     var Date = function (options) {
@@ -68,15 +86,50 @@
     });
     
     Date.defaults = $.extend({}, $.fn.editableform.types.abstract.defaults, {
+        /**
+        @property tpl 
+        @default <div style="float: left; padding: 0; margin: 0 0 9px 0"></div>
+        **/         
         tpl:'<div style="float: left; padding: 0; margin: 0 0 9px 0"></div>',
+        /**
+        @property inputclass 
+        @default well
+        **/         
         inputclass: 'well',
-        format:'yyyy-mm-dd', //format used for sending to server and converting from value
-        viewformat: null,  //used for display date in element
-        //special options
-        weekStart: 0,
-        startView: 0,
+        /**
+        Format used for sending value to server. Also applied when converting date from <code>data-value</code> attribute.<br>
+        Possible tokens are: <code>d, dd, m, mm, yy, yyyy</code>  
+        
+        @property format 
+        @type string
+        @default yyyy-mm-dd
+        **/         
+        format:'yyyy-mm-dd',
+        /**
+        Format used for displaying date. Also applied when converting date from element's text on init.   
+        If not specified equals to <code>format</code>
+        
+        @property viewformat 
+        @type string
+        @default null
+        **/          
+        viewformat: null,  
+        /**
+        Configuration of datepicker.
+        Full list of options: http://vitalets.github.com/bootstrap-datepicker
+        
+        @property datepicker 
+        @type object
+        @default {
+            weekStart: 0,
+            startView: 0,
+            autoclose: false
+        }
+        **/
         datepicker:{
-            autoclose:false
+            weekStart: 0,
+            startView: 0,
+            autoclose: false
         }
     });   
 
diff --git a/src/inputs/dateui/dateui.js b/src/inputs/dateui/dateui.js
index 16379f7..35817d2 100644
--- a/src/inputs/dateui/dateui.js
+++ b/src/inputs/dateui/dateui.js
@@ -1,9 +1,24 @@
 /**
-jQuery UI Datepicker
-Note: you can not use both date and dateui on the same page.
+jQuery UI Datepicker.  
+Description and examples: http://jqueryui.com/datepicker.  
+Do not use it together with bootstrap-datepicker.
 
 @class dateui
 @extends abstract
+@example
+<a href="#" id="dob" data-type="date" data-pk="1" data-url="post.php" data-original-title="Select date">15/05/1984</a>
+<script>
+$(function(){
+    $('#dob').editable({
+        format: 'yyyy-mm-dd',    
+        viewformat: 'dd/mm/yyyy',    
+        datepicker: {
+                firstDay: 1
+           }
+        }
+    });
+});
+</script>
 **/
 (function ($) {
 
@@ -101,7 +116,7 @@ Note: you can not use both date and dateui on the same page.
         inputclass: '',
         /**
         Format used for sending value to server. Also applied when converting date from <code>data-value</code> attribute.<br>
-        Full <a href="http://docs.jquery.com/UI/Datepicker/formatDate">list of tokens</a>.  
+        Full list of tokens: http://docs.jquery.com/UI/Datepicker/formatDate
         
         @property format 
         @type string
@@ -109,7 +124,8 @@ Note: you can not use both date and dateui on the same page.
         **/          
         format:'yyyy-mm-dd', 
         /**
-        Format used for displaying date. If not specified equals to <code>format</code>
+        Format used for displaying date. Also applied when converting date from element's text on init.    
+        If not specified equals to <code>format</code>
         
         @property viewformat 
         @type string
@@ -119,7 +135,7 @@ Note: you can not use both date and dateui on the same page.
         
         /**
         Configuration of datepicker.
-        Full list of <a href="http://api.jqueryui.com/datepicker">possible options</a>. 
+        Full list of options: http://api.jqueryui.com/datepicker
         
         @property datepicker 
         @type object
diff --git a/src/inputs/select.js b/src/inputs/select.js
index 8ce39fd..2dbee93 100644
--- a/src/inputs/select.js
+++ b/src/inputs/select.js
@@ -1,8 +1,23 @@
 /**
-Select input
+Select (dropdown) input
 
 @class select
 @extends abstract
+@example
+<a href="#" id="status" data-type="select" data-pk="1" data-url="post.php" data-original-title="Select status"></a>
+<script>
+$(function(){
+    $('#status').editable({
+        value: 2,    
+        source: [
+              {value: 1, text: 'Active'},
+              {value: 2, text: 'Blocked'},
+              {value: 3, text: 'Deleted'}
+           ]
+        }
+    });
+});
+</script>
 **/
 (function ($) {
 
@@ -31,7 +46,7 @@ Select input
         },
 
         html2value: function (html) {
-            return null; //it's not good idea to set value by text for SELECT. better set NULL
+            return null; //it's not good idea to set value by text for SELECT. Better set NULL
         },
 
         value2html: function (value, element) {
@@ -229,8 +244,6 @@ Select input
         @property source 
         @type string|array|object
         @default null
-        @example
-        source: 'groups.php' 
         **/         
         source:null, 
         /**
@@ -253,4 +266,4 @@ Select input
 
     $.fn.editableform.types.select = Select;      
 
-}(window.jQuery));
\ No newline at end of file
+}(window.jQuery));
diff --git a/src/inputs/text.js b/src/inputs/text.js
index 7d60ea6..3083b73 100644
--- a/src/inputs/text.js
+++ b/src/inputs/text.js
@@ -3,6 +3,16 @@ Text input
 
 @class text
 @extends abstract
+@example
+<a href="#" id="username" data-type="text" data-pk="1">awesome</a>
+<script>
+$(function(){
+    $('#username').editable({
+        url: 'post.php',
+        title: 'Enter username'
+    });
+});
+</script>
 **/
 (function ($) {
     var Text = function (options) {
diff --git a/src/inputs/textarea.js b/src/inputs/textarea.js
index f613b74..7d9026f 100644
--- a/src/inputs/textarea.js
+++ b/src/inputs/textarea.js
@@ -3,7 +3,16 @@ Textarea input
 
 @class textarea
 @extends abstract
-@module inputs
+@example
+<a href="#" id="comments" data-type="textarea" data-pk="1">awesome comment!</a>
+<script>
+$(function(){
+    $('#comments').editable({
+        url: 'post.php',
+        title: 'Enter comments'
+    });
+});
+</script>
 **/
 (function ($) {
 
@@ -64,7 +73,7 @@ Textarea input
         tpl:'<textarea rows="8"></textarea>',
         /**
         @property inputclass 
-        @default 'span3'
+        @default span3
         **/          
         inputclass:'span3',
         /**