diff --git a/generic_data/Functions/functions.xml b/generic_data/Functions/functions.xml
index 460fdbf..ff3856a 100644
--- a/generic_data/Functions/functions.xml
+++ b/generic_data/Functions/functions.xml
@@ -1,71 +1,71 @@
 <?xml version="1.0"?>
 <functions xml:id="functions">
-    <function name="mean_(,)" args="1" kind="time">
+    <function name="mean_(,)" args="1" kind="time" group="stat">
         <prompt>input averaging time in secs</prompt>
         <info_brief>average</info_brief>
         <new_kernel>#sampling_classic</new_kernel>
     </function> 
-    <function name="median_(,)" args="1" kind="time">
+    <function name="median_(,)" args="1" kind="time" group="stat">
         <prompt>input averaging time in secs</prompt>
         <info_brief>median average</info_brief>
         <new_kernel>#median</new_kernel>
     </function>
-    <function name="rms_(,)" args="1" kind="time">
+    <function name="rms_(,)" args="1" kind="time" group="stat">
         <prompt>input averaging time in secs</prompt>
         <info_brief>root mean square</info_brief>
         <new_kernel>#rms</new_kernel>
     </function>  
-    <function name="min_(,)" args="1" kind="time">
+    <function name="min_(,)" args="1" kind="time"  group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>min() function</info_brief>
         <new_kernel>#min</new_kernel>
     </function> 
-    <function name="max_(,)" args="1" kind="time">
+    <function name="max_(,)" args="1" kind="time" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>max() function</info_brief>
         <new_kernel>#max</new_kernel>
     </function>
-    <function name="var_(,)" args="1" kind="time">
+    <function name="var_(,)" args="1" kind="time" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>variance() function</info_brief>
         <new_kernel>#var</new_kernel>
     </function>
-    <function name="skew_(,)" args="1" kind="time">
+    <function name="skew_(,)" args="1" kind="time" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>skewness() function</info_brief>
         <new_kernel>#skew</new_kernel>
     </function>
-    <function name="mean_sm_(,)" args="1" kind="sliding">
+    <function name="mean_sm_(,)" args="1" kind="sliding" group="stat">
         <prompt>input averaging time in secs</prompt>
         <info_brief>average</info_brief>
         <new_kernel>#sliding_average</new_kernel>
     </function> 
-    <function name="rms_sm_(,)" args="1" kind="sliding">
+    <function name="rms_sm_(,)" args="1" kind="sliding" group="stat">
         <prompt>input averaging time in secs</prompt>
         <info_brief>root mean square</info_brief>
         <new_kernel>#rms_sm</new_kernel>
     </function>
-    <function name="min_sm_(,)" args="1" kind="sliding">
+    <function name="min_sm_(,)" args="1" kind="sliding" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>min() function</info_brief>
         <new_kernel>#min_sm</new_kernel>
     </function> 
-    <function name="max_sm_(,)" args="1" kind="sliding">
+    <function name="max_sm_(,)" args="1" kind="sliding" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>max() function</info_brief>
         <new_kernel>#max_sm</new_kernel>
     </function>
-    <function name="var_sm_(,)" args="1" kind="sliding">
+    <function name="var_sm_(,)" args="1" kind="sliding" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>variance() function</info_brief>
         <new_kernel>#var_sm</new_kernel>
     </function>
-    <function name="skew_sm_(,)" args="1" kind="sliding">
+    <function name="skew_sm_(,)" args="1" kind="sliding" group="stat">
         <prompt>input window time in secs</prompt>
         <info_brief>skewness() function</info_brief>
         <new_kernel>#skew_sm</new_kernel>
     </function>
-    <function name="smooth_(,)" args="1" kind="sliding">
+    <function name="smooth_(,)" args="1" kind="sliding" group="stat">
         <prompt>input averaging time in secs</prompt>
         <info_brief>smooths with a boxcar average</info_brief>
         <new_kernel>#boxcar</new_kernel>
@@ -74,29 +74,29 @@
       <prompt>input number of points  N to delay by</prompt>
       <info_brief>Delays array by N points back (N &lt; 0) and forth (N &gt; 0)</info_brief>
     </function>-->
-    <function name="shiftT_(,)" args="1" kind="amda">
+    <function name="shiftT_(,)" args="1" kind="amda" group="space">
         <prompt>input time interval T in secs to delay by</prompt>
         <info_brief>Shifts parameter by T secs back (T &lt; 0) and forth (T &gt; 0))</info_brief>
         <new_kernel>#timeShift</new_kernel>
     </function>
     
-    <function name="vAlfven(,)" args="2" kind="physics">
+    <function name="vAlfven(,)" args="2" kind="physics" group="space">
         <prompt_param>density[cm^⁻3], b_magnitude[nT]</prompt_param>
         <info_brief>Alfven velocity Valfven(density[cm^⁻3], b_magnitude[nT])</info_brief>
         <new_kernel>alfvenVelocity</new_kernel>
     </function>
 
-     <function name="perreault78(,,)" args="3" kind="physics">
+     <function name="perreault78(,,)" args="3" kind="model" group="space">
         <info_brief>Perreault and Akasofu 1978 model u = perreault78(E_mag, B_mag, theta_p)</info_brief>
         <new_kernel>perreault78</new_kernel>
     </function>
 
-    <function name="newell2007(,)" args="3" kind="physics">
+    <function name="newell2007(,)" args="3" kind="model" group="space">
         <info_brief>NEWELL et al 2007 solar wind-magnetosphere coupling function d_phi/d_t = newell2007(mu, B_mag, theta) </info_brief>
         <new_kernel>newell2007</new_kernel>
     </function>
  
-    <function name="fairfield70(,tilt_angle_60)" args="2" kind="physics">
+    <function name="fairfield70(,tilt_angle_60)" args="2" kind="model" group="space">
         <prompt_param>xyz_sm (Re), dipole tilt angle (deg)</prompt_param>
         <default_args>,tilt_angle_60</default_args>
         <info_brief>Distance (Re) from s/c location to Fairfield1970 model neutral sheet position.&lt;br/&gt;
@@ -104,14 +104,14 @@
         <new_kernel>fairfield70</new_kernel>        
     </function>
 
-   <function name="fairfield80(,tilt_angle_60)" args="2" kind="physics">
+   <function name="fairfield80(,tilt_angle_60)" args="2" kind="model" group="space">
         <prompt_param>xyz_sm (Re), dipole tilt angle (deg)</prompt_param> 
         <default_args>,tilt_angle_60</default_args>
         <info_brief>Distance (Re) from s/c location to Fairfield1980 model neutral sheet position.&lt;br/&gt;
             dZ = fairfield80(xyz_sm, tilt_angle),&lt;br/&gt; xyz_sm is the s/c SM coordinates (Re) and  tilt angle is in degrees.&lt;br/&gt;</info_brief>
         <new_kernel>fairfield80</new_kernel>
     </function>
-    <function name="lopez90(omni_kp,,,tilt_angle_60)" args="4" kind="physics">
+    <function name="lopez90(omni_kp,,,tilt_angle_60)" args="4" kind="model" group="space">
         <prompt_param>Kp, MLT (deg), R (Re), dipole tilt angle (deg)</prompt_param>
         <default_args>omni_kp,,,tilt_angle_60</default_args>
         <info_brief>
@@ -127,108 +127,108 @@
         <info_brief>frame transformation</info_brief>
         <new_kernel>#framesTransformation</new_kernel>
     </function>-->
-    <function name="angle(,)" args="2" kind="vectors">
+    <function name="angle(,)" args="2" kind="vectors" group="math">
         <info_brief>Angle between two vectors</info_brief>
         <new_kernel>angle</new_kernel>
     </function>
 
-    <function name="cross(,)" args="2" kind="vectors">
+    <function name="cross(,)" args="2" kind="vectors" group="math">
         <info_brief>Cross product</info_brief>
         <new_kernel>cross</new_kernel>
     </function>
 
-    <function name="dot(,)" args="2" kind="vectors">
+    <function name="dot(,)" args="2" kind="vectors" group="math">
         <info_brief>Dot product</info_brief>
         <new_kernel>dot</new_kernel>
     </function>
 
-    <function name="vector(,,)" args="3" kind="vectors">
+    <function name="vector(,,)" args="3" kind="vectors" group="math">
         <info_brief>Build vector from components</info_brief>
         <new_kernel>vector_</new_kernel>
     </function>
 
-    <function name="module()" kind="vectors">
+    <function name="module()" kind="vectors" group="math">
         <info_brief>Magnitude</info_brief>
         <new_kernel>magnitude</new_kernel>
     </function>
     
-    <function name="abs()" kind="math">
+    <function name="abs()" kind="math" group="math">
         <info_brief>Absolute value</info_brief>
         <new_kernel>abs</new_kernel>
     </function>
-    <function name="acos()" kind="math">
+    <function name="acos()" kind="math" group="math">
         <info_brief>Arc-cosine</info_brief>
         <new_kernel>acos</new_kernel>
     </function>
-    <function name="alog()" kind="math">
+    <function name="alog()" kind="math" group="math">
         <info_brief>Natural logarithm</info_brief>
         <new_kernel>log</new_kernel>
     </function>
-    <function name="alog10()" kind="math">
+    <function name="alog10()" kind="math" group="math">
         <info_brief>Logarithm to the base 10</info_brief>
         <new_kernel>log10</new_kernel>
     </function>
-    <function name="asin()" kind="math">
+    <function name="asin()" kind="math" group="math">
         <info_brief>Arc-sine</info_brief>
         <new_kernel>asin</new_kernel>
     </function>
-    <function name="atan()" kind="math">
+    <function name="atan()" kind="math" group="math">
         <info_brief>Arc-tangent</info_brief>
         <new_kernel>atan</new_kernel>
     </function>
-    <function name="atan2(,)" args="2" kind="math">
+    <function name="atan2(,)" args="2" kind="math" group="math">
         <info_brief>Arc-tangent</info_brief>
         <new_kernel>atan2</new_kernel>
     </function>
-    <function name="ceil()" kind="math">
+    <function name="ceil()" kind="math" group="math">
         <info_brief>Closest integer greater than or equal to its argument</info_brief>
         <new_kernel>Ceil</new_kernel>
     </function>
-    <function name="cos()" kind="math">
+    <function name="cos()" kind="math" group="math">
         <info_brief>cosine</info_brief>
         <new_kernel>cos</new_kernel>
     </function>
-    <function name="cosh()" kind="math">
+    <function name="cosh()" kind="math" group="math">
         <info_brief>Hyperbolic cosine</info_brief>
         <new_kernel>cosh</new_kernel>
     </function>
-    <function name="deriv_()" kind="math">
+    <function name="deriv_()" kind="math" group="math">
         <info_brief>deriv() function with possibly unequal point spacing</info_brief>
         <new_kernel>#deriv</new_kernel>
     </function>
-    <function name="exp()" kind="math">
+    <function name="exp()" kind="math" group="math">
         <info_brief>Natural exponential function</info_brief>
         <new_kernel>exp</new_kernel>
     </function>
-    <function name="fix()" kind="math">
+    <function name="fix()" kind="math" group="math">
         <info_brief>Integer</info_brief>
         <new_kernel>Fix</new_kernel>
     </function>
-    <function name="floor()" kind="math">
+    <function name="floor()" kind="math" group="math">
         <info_brief>Closest integer less than or equal to its argument</info_brief>
         <new_kernel>Floor</new_kernel>
     </function>
-    <function name="sign()" kind="math">
+    <function name="sign()" kind="math" group="math">
         <info_brief>Sign</info_brief>
         <new_kernel>Sign</new_kernel>
     </function>
-    <function name="sin()" kind="math">
+    <function name="sin()" kind="math" group="math">
         <info_brief>Sine</info_brief>
         <new_kernel>sin</new_kernel>
     </function>
-    <function name="sinh()" kind="math">
+    <function name="sinh()" kind="math" group="math">
         <info_brief>Hyperbolic sine</info_brief>
         <new_kernel>sinh</new_kernel>
     </function>
-    <function name="tan()" kind="math">
+    <function name="tan()" kind="math" group="math">
         <info_brief>Tangent</info_brief>
         <new_kernel>tan</new_kernel>
     </function>
-    <function name="tanh()" kind="math">
+    <function name="tanh()" kind="math" group="math">
         <info_brief>Hyperbolic tangent</info_brief>
         <new_kernel>tanh</new_kernel>
     </function>
-    <function name="sqrt()" kind="math">
+    <function name="sqrt()" kind="math" group="math">
         <info_brief>Square root</info_brief>
         <new_kernel>sqrt</new_kernel>
     </function>
diff --git a/js/app/models/Function.js b/js/app/models/Function.js
index 9de0131..74add0a 100644
--- a/js/app/models/Function.js
+++ b/js/app/models/Function.js
@@ -15,6 +15,7 @@ Ext.define('amdaModel.Function', {
 	fields : [
 		{name: 'name', mapping: '@name', type:'string'},
 		{name: 'kind', mapping: '@kind', type: 'string', defaultValue: 'amda'},
+        {name: 'group', mapping: '@group', type: 'string', defaultValue: 'space'},
 		{name: 'args', mapping: '@args', type: 'int', defaultValue: 1},
 		{name: 'argv', mapping: '@argv', type: 'string'},
 		{name: 'prompt', type: 'string', defaultValue: ''},
@@ -26,7 +27,8 @@ Ext.define('amdaModel.Function', {
 	validations: [
 		{type: 'presence', field: 'name'},
 		{type: 'presence', field: 'kind'},
-		{type: 'inclusion', field: 'kind', list: ['math','amda','time','sliding']}
+        {type: 'presence', field: 'group'}/*,
+		{type: 'inclusion', field: 'kind', list: ['amda','time']}*/
 	],
   
 	proxy: {
diff --git a/js/app/views/CalculatorUI.js b/js/app/views/CalculatorUI.js
index f1d18d0..2cb1c01 100644
--- a/js/app/views/CalculatorUI.js
+++ b/js/app/views/CalculatorUI.js
@@ -107,11 +107,12 @@ Ext.define('amdaUI.CalculatorUI', {
                 scope: this,
                 callback: function (records, operation, success)
                 {
-                    this.createAllFunctionBtns();
+                    this.createAllBtns();
                 }
             });
         } else
-            this.createAllFunctionBtns();
+            this.createAllBtns();
+    
 
     },
 
@@ -152,12 +153,27 @@ Ext.define('amdaUI.CalculatorUI', {
                     activeTab: 0,
                     id: 'calc_tab_const_id'
                 }, {
-                    title: 'Functions', xtype: 'tabpanel', //iconCls: 'tabs',
+                    title: 'Math', xtype: 'tabpanel', //iconCls: 'tabs',
+                    enableTabScroll: true, tabPosition: 'bottom',
+                    defaults: {frame: true, border: false, plain: true, layout: 'column', autoScroll: true},
+                    activeTab: 0,
+                    id: 'calc_tab_math_id'
+                },
+                {
+                    title: 'Statistics', xtype: 'tabpanel', //iconCls: 'tabs',
+                    enableTabScroll: true, tabPosition: 'bottom',
+                    defaults: {frame: true, border: false, plain: true, layout: 'column', autoScroll: true},
+                    activeTab: 0,
+                    id: 'calc_tab_stat_id'
+                },
+           {
+                    title: 'Space', xtype: 'tabpanel', //iconCls: 'tabs',
                     enableTabScroll: true, tabPosition: 'bottom',
                     defaults: {frame: true, border: false, plain: true, layout: 'column', autoScroll: true},
                     activeTab: 0,
                     id: 'calc_tab_func_id'
-                }]
+                }
+                   ]
         };
     },
 
@@ -180,7 +196,6 @@ Ext.define('amdaUI.CalculatorUI', {
             }, this);
         } else {
             if ( currentBtn.initialConfig.prompt_param != "" ) {
-                console.log(currentBtn.initialConfig);
                  Ext.Msg.alert('Input Parameters', currentBtn.initialConfig.prompt_param);
             }
             this.processFormula(sel, currentBtn, params, ")");
@@ -361,16 +376,28 @@ Ext.define('amdaUI.CalculatorUI', {
         return btns;
     },
 
-    createAllFunctionBtns: function ()
-    {
-        this.createFunctionBtns('MathFunctions', 'Simple Maths');
-        this.createFunctionBtns('VectorFunctions', 'Vector Functions');
-        this.createFunctionBtns('TimeFunctions', 'Statistics');
-        this.createFunctionBtns('FunctionsSliding', 'Statistics/Sliding');
-        this.createFunctionBtns('PhysicsFunctions', 'Physics');
-        this.createFunctionBtns('AmdaFunctions', 'Special');
+    createAllBtns: function ()
+    {  
+        // group math 
+        amdaUI.CalculatorUI.functionStore.filter('group', 'math');       
+        this.createFunctionBtns('MathFunctions', 'Simple Maths','#calc_tab_math_id');
+        this.createFunctionBtns('VectorFunctions', 'Vector Functions', '#calc_tab_math_id');
+        amdaUI.CalculatorUI.functionStore.clearFilter();
+        
+        // group space
+        amdaUI.CalculatorUI.functionStore.filter('group', 'space');
+        this.createFunctionBtns('PhysicsFunctions', 'Derived', '#calc_tab_func_id');
+        this.createFunctionBtns('ModelFunctions', 'Models', '#calc_tab_func_id');
+        this.createFunctionBtns('AmdaFunctions', 'TimeShift', '#calc_tab_func_id');
+        amdaUI.CalculatorUI.functionStore.clearFilter();
+        
+        // group stat
+        amdaUI.CalculatorUI.functionStore.filter('group', 'stat');
+        this.createFunctionBtns('TimeFunctions', 'Statistics', '#calc_tab_stat_id');
+        this.createFunctionBtns('FunctionsSliding', 'Statistics/Sliding','#calc_tab_stat_id');
+        amdaUI.CalculatorUI.functionStore.clearFilter();
     },
-
+    
     createAllConstantBtns: function ()
     {
         this.createConstantBtns('Space', 'Planets Constants');
@@ -431,9 +458,9 @@ Ext.define('amdaUI.CalculatorUI', {
         amdaUI.CalculatorUI.constantStore.clearFilter();
     },
 
-    createFunctionBtns: function (item, tabTitle)
+    createFunctionBtns: function (item, tabTitle, tabID)
     {
-        var funcTab = this.win.query('#calc_tab_func_id');
+        var funcTab = this.win.query(tabID);
 
         if (funcTab.length < 1)
             return;
@@ -449,16 +476,20 @@ Ext.define('amdaUI.CalculatorUI', {
                 amdaUI.CalculatorUI.functionStore.filter('kind', 'amda');
                 break;
             case 'TimeFunctions' :
-                amdaUI.CalculatorUI.functionStore.filter('kind', 'time');
+                 amdaUI.CalculatorUI.functionStore.filter('kind', 'time');
                 break;
             case 'FunctionsSliding' :
-                amdaUI.CalculatorUI.functionStore.filter('kind', 'sliding');
+                 amdaUI.CalculatorUI.functionStore.filter('kind', 'sliding');
                 break;
             case 'VectorFunctions' :
-                amdaUI.CalculatorUI.functionStore.filter('kind', 'vector');
+                 amdaUI.CalculatorUI.functionStore.filter('kind', 'vector');
                 break;
+            case 'ModelFunctions' :
+                 amdaUI.CalculatorUI.functionStore.filter('kind', 'model');
+                width = .45;
+                break; 
             case 'PhysicsFunctions' :
-                amdaUI.CalculatorUI.functionStore.filter('kind', 'physics');
+                 amdaUI.CalculatorUI.functionStore.filter('kind', 'physics');
                 width = .25;
                 break;
         }
@@ -469,6 +500,7 @@ Ext.define('amdaUI.CalculatorUI', {
                     defaults: {xtype: 'button', columnWidth: width}
                 });
 
+        
         amdaUI.CalculatorUI.functionStore.each(function (f) {
             crtTab.add(
                     {
@@ -494,8 +526,8 @@ Ext.define('amdaUI.CalculatorUI', {
                                 params = b.initialConfig.defaultArgs.split(',');
                             }
                             // Formula Parsing for arguments
-                            //var params = this.parseArgsInFormula(selectedText, 0);
-//							var params = selectedText ? selectedText.split(',') : [];
+//                             var params = this.parseArgsInFormula(selectedText, 0);
+//                             var params = selectedText ? selectedText.split(',') : [];
 
                             if (params === -1) {
                                 Ext.Msg.alert("Invalid Selection", "Action aborted");
@@ -533,8 +565,8 @@ Ext.define('amdaUI.CalculatorUI', {
         },
                 this
                 );
-        //clear filter
-        amdaUI.CalculatorUI.functionStore.clearFilter();
+        //clear filter      
+       amdaUI.CalculatorUI.functionStore.clearFilter();
     },
 
     getItems: function (item)
--
libgit2 0.21.2