diff --git a/app/build.gradle b/app/build.gradle
index 5f2968c97b17e5ab1a48ed80d7920ebae7d84226..a34e3b22a38c298666861924b7f01285e9ba004f 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,19 +1,22 @@
 apply plugin: 'com.android.application'
+apply plugin: 'versionPlugin'
 
 android {
     signingConfigs {
         config {
         }
     }
+
     compileSdkVersion 23
     buildToolsVersion '23.0.2'
     defaultConfig {
         applicationId "ohi.andre.consolelauncher"
         minSdkVersion 8
         targetSdkVersion 23
-        versionCode 66
-        versionName "4.1"
+        versionCode 67
+        versionName "4.2"
     }
+
     buildTypes {
         release {
             minifyEnabled true
@@ -21,6 +24,16 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
+
+    versionPlugin {
+        buildTypesMatcher = 'release'
+
+        supportBuildNumber = true
+        buildNumberPrefix = 'b'
+
+        fileNameFormat = 't-ui-vrs_$versionName-build_$versionCode'
+    }
+
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_7
         targetCompatibility JavaVersion.VERSION_1_7
@@ -28,7 +41,7 @@ android {
 }
 
 dependencies {
-    compile 'com.android.support:appcompat-v7:23.2.1'
+    compile 'com.android.support:appcompat-v7:23.4.0'
     compile files('../libs/CompareString.jar')
     compile files('../libs/commons-io-2.4.jar')
 }
\ No newline at end of file
diff --git a/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java b/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java
index 0680e265fa80bb588d07bd203aaf8789689281af..6df6363413bc6070883db9e0570ccc60338a3699 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java
@@ -39,9 +39,10 @@ public class LauncherActivity extends Activity implements Reloadable {
     private MainManager main;
 
     private boolean hideStatusBar;
+    private boolean openKeyboardOnStart;
 
     private PreferencesManager preferencesManager;
-    //    access Main.onCommand from UIManager
+
     private CommandExecuter ex = new CommandExecuter() {
 
         @Override
@@ -54,7 +55,7 @@ public class LauncherActivity extends Activity implements Reloadable {
             return null;
         }
     };
-    //    access input from MainManager
+
     private Inputable in = new Inputable() {
 
         @Override
@@ -66,7 +67,7 @@ public class LauncherActivity extends Activity implements Reloadable {
             }
         }
     };
-    //    access output from MainManager
+
     private Outputable out = new Outputable() {
 
         @Override
@@ -124,14 +125,17 @@ public class LauncherActivity extends Activity implements Reloadable {
             startService(service);
         }
 
-//        use system wp
         boolean useSystemWP = Boolean.parseBoolean(preferencesManager.getValue(PreferencesManager.USE_SYSTEMWP));
         if (useSystemWP)
             setTheme(R.style.SystemWallpaperStyle);
 
-//        hide status bar
         hideStatusBar = Boolean.parseBoolean(preferencesManager.getValue(PreferencesManager.FULLSCREEN));
 
+        openKeyboardOnStart = Boolean.parseBoolean(preferencesManager.getValue(PreferencesManager.OPEN_KEYBOARD));
+        if (!openKeyboardOnStart) {
+            this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
+        }
+
         setContentView(R.layout.main_view);
 
         ViewGroup mainView = (ViewGroup) findViewById(R.id.mainview);
@@ -184,7 +188,8 @@ public class LauncherActivity extends Activity implements Reloadable {
     protected void onStart() {
         super.onStart();
 
-        ui.onStart();
+        if (openKeyboardOnStart)
+            ui.onStart();
     }
 
     @Override
diff --git a/app/src/main/java/ohi/andre/consolelauncher/MainManager.java b/app/src/main/java/ohi/andre/consolelauncher/MainManager.java
index f18ac87912d12beb204c31a12764bb1fd54be2ea..a78f237f55b1d39349056e096fae5038e2706daa 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/MainManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/MainManager.java
@@ -229,13 +229,31 @@ public class MainManager {
     class TuiCommandTrigger implements CmdTrigger {
 
         @Override
-        public boolean trigger(ExecInfo info, Outputable out, String input, int id) throws Exception {
-            Command command = CommandTuils.parse(input, info, false);
-            if (command != null) {
-                out.onOutput(command.exec(info), id);
-                return true;
-            } else
-                return false;
+        public boolean trigger(final ExecInfo info, final Outputable out, final String input, final int id) throws Exception {
+
+            final boolean[] returnValue = new boolean[1];
+            Thread t = new Thread() {
+                @Override
+                public void run() {
+                    super.run();
+
+                    try {
+                        Command command = CommandTuils.parse(input, info, false);
+                        if (command != null) {
+                            out.onOutput(command.exec(info), id);
+                            returnValue[0] = true;
+                        } else
+                            returnValue[0] = false;
+                    } catch (Exception e) {
+                        out.onOutput(e.toString(), id);
+                    }
+                }
+            };
+
+            t.run();
+            t.join();
+
+            return returnValue[0];
         }
     }
 }
diff --git a/app/src/main/java/ohi/andre/consolelauncher/UIManager.java b/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
index 7ff4679e6d99268aa9beb26ac3de89fba068de3d..7815fed2b7fe257384a698eec76effbec0e8c69f 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
@@ -43,25 +43,25 @@ public class UIManager implements OnTouchListener {
 
     private final int RAM_DELAY = 3000;
     public Handler handler;
-    //    usable stuff
+
     protected Context mContext;
     protected LinearLayout suggestionsView;
-    //    this is for double tap
+
     private DevicePolicyManager policy;
     private ComponentName component;
     private GestureDetector det;
     private ExecInfo info;
-    //    reference for open/close kb
+
     private InputMethodManager imm;
-    //    reference to MainManager's onCommand
+
     private CommandExecuter trigger;
-    //    my terminal
+
     private TerminalAdapter mTerminalAdapter;
-    //    last measured root height
+
     private int lastMeasuredHeight;
-    //    reference to views
+
     private TextView ram;
-    //    this is for RAM view
+
     private ActivityManager.MemoryInfo memory;
     private ActivityManager activityManager;
     private Runnable ramRunnable = new Runnable() {
@@ -285,8 +285,6 @@ public class UIManager implements OnTouchListener {
     //    call this to trigger a suggestion change
     private void requestSuggestion(final String before, final String lastWord) {
 
-        suggestionsView.removeAllViews();
-
         if (suggestionViewParams == null) {
             suggestionViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
             suggestionViewParams.setMargins(SkinManager.SUGGESTION_MARGIN, 0, SkinManager.SUGGESTION_MARGIN, 0);
diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/raw/aliasfile.java b/app/src/main/java/ohi/andre/consolelauncher/commands/raw/aliasfile.java
index b1d4d3a396b89900a9f8a626bed9b7cf470db030..7bab289c013133753fe303fceeb72ecca1fe9664 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/commands/raw/aliasfile.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/commands/raw/aliasfile.java
@@ -25,10 +25,10 @@ public class aliasfile implements CommandAbstraction {
     @Override
     public String exec(final ExecInfo info) throws Exception {
         File tuiFolder = Tuils.getTuiFolder();
-        final File aliasFile = new File(tuiFolder, PreferencesManager.ALIASES_FILENAME);
+        final File aliasFile = new File(tuiFolder, PreferencesManager.ALIAS_FILENAME);
         FileManager.openFile(info.context, aliasFile);
 
-        return info.res.getString(R.string.output_opening) + " " + PreferencesManager.ALIASES_FILENAME;
+        return info.res.getString(R.string.output_opening) + " " + PreferencesManager.ALIAS_FILENAME;
     }
 
     @Override
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/FileManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/FileManager.java
index 8e676a6afed21cce0c1f170288b3178a6a9da0a1..09c6614d33258b1fd73bd2eec55c66d90b9447ea 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/FileManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/FileManager.java
@@ -10,6 +10,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.List;
 
 import ohi.andre.comparestring.Compare;
 import ohi.andre.consolelauncher.tuils.Tuils;
@@ -160,7 +161,7 @@ public class FileManager {
         return 0;
     }
 
-    public static ArrayList<File> lsFile(File f, boolean showHidden) {
+    public static List<File> lsFile(File f, boolean showHidden) {
         File[] content = f.listFiles();
 
         Arrays.sort(content, new Comparator<File>() {
@@ -175,7 +176,7 @@ public class FileManager {
             }
         });
 
-        ArrayList<File> files = new ArrayList<>();
+        List<File> files = new ArrayList<>();
         for (File u : content)
             if (!u.isHidden() || showHidden)
                 files.add(u);
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java
index f4166c1eeafafad4dabba17234ba40eb299f9f2a..13dc8fe294ef9ce4c7b9eeadd436e3cc3fae28f5 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/PreferencesManager.java
@@ -46,8 +46,11 @@ public class PreferencesManager {
     public static final String USE_SYSTEMWP = "useSystemWallpaper";
     public static final String FULLSCREEN = "fullscreen";
     public static final String NOTIFICATION = "keepAliveWithNotification";
-    public static final String ALIASES_FILENAME = "alias.txt";
+    public static final String OPEN_KEYBOARD = "openKeyboardOnStart";
+
+    public static final String ALIAS_FILENAME = "alias.txt";
     public static final int ALIAS = 11;
+
     //    settings version
     private static final String SETTINGS_VERSION = "settingsVersion";
     private List<String> settings;
@@ -101,7 +104,7 @@ public class PreferencesManager {
                 name = SETTINGS_FILENAME;
                 break;
             case PreferencesManager.ALIAS:
-                name = ALIASES_FILENAME;
+                name = ALIAS_FILENAME;
                 break;
             default:
                 return null;
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java
index e098fd5a18a27cd29c1b9fd17c2ee9b6cf9409f7..8a44f690e968106d74a0497d19812326e906b444 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/SuggestionsManager.java
@@ -79,8 +79,7 @@ public class SuggestionsManager {
                 Command cmd = null;
                 try {
                     cmd = CommandTuils.parse(before, info, true);
-                } catch (Exception e) {
-                }
+                } catch (Exception e) {}
 
                 if (cmd != null) {
                     if (cmd.cmd.maxArgs() == 1 && before.contains(" ")) {
diff --git a/build.gradle b/build.gradle
index 03bced9f3fb18a90b91401e6547e9ed4896de30e..7ca155a7b678d4f2d4cd15303f25e3b7c7ec4e2e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,9 +3,11 @@
 buildscript {
     repositories {
         jcenter()
+        mavenCentral()
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:2.1.0'
+        classpath 'com.github.hamsterksu:android-appversion-gradle-plugin:1.+'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files