diff --git a/Pictures/basic.png b/Pictures/basic.png
new file mode 100644
index 0000000..f9e9e22
Binary files /dev/null and b/Pictures/basic.png differ
diff --git a/Pictures/blue.png b/Pictures/blue.png
new file mode 100644
index 0000000..163b930
Binary files /dev/null and b/Pictures/blue.png differ
diff --git a/Pictures/clear.png b/Pictures/clear.png
new file mode 100644
index 0000000..e6cae4b
Binary files /dev/null and b/Pictures/clear.png differ
diff --git a/Pictures/ease.gif b/Pictures/ease.gif
new file mode 100644
index 0000000..a95095f
Binary files /dev/null and b/Pictures/ease.gif differ
diff --git a/Pictures/in_out.gif b/Pictures/in_out.gif
new file mode 100644
index 0000000..cb09a75
Binary files /dev/null and b/Pictures/in_out.gif differ
diff --git a/Pictures/keyboard.gif b/Pictures/keyboard.gif
new file mode 100644
index 0000000..9cf62e3
Binary files /dev/null and b/Pictures/keyboard.gif differ
diff --git a/Pictures/operations.png b/Pictures/operations.png
new file mode 100644
index 0000000..c8ad83c
Binary files /dev/null and b/Pictures/operations.png differ
diff --git a/Pictures/red.png b/Pictures/red.png
new file mode 100644
index 0000000..d0aeaaa
Binary files /dev/null and b/Pictures/red.png differ
diff --git a/Pictures/test.png b/Pictures/test.png
new file mode 100644
index 0000000..0e98102
Binary files /dev/null and b/Pictures/test.png differ
diff --git a/Pictures/unclear.png b/Pictures/unclear.png
new file mode 100644
index 0000000..c8aa821
Binary files /dev/null and b/Pictures/unclear.png differ
diff --git a/app/build.gradle b/app/build.gradle
index 2645d20..aa685c6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -26,7 +26,7 @@ dependencies {
     compile 'com.android.support:appcompat-v7:23.2.0'
     compile project(':blurlockview')
 
-    compile('com.github.afollestad.material-dialogs:core:0.8.5.7@aar') {
+    compile('com.github.afollestad.material-dialogs:commons:0.8.5.7@aar') {
         transitive = true
     }
 }
diff --git a/app/src/main/assets/fonts/San Francisco Regular.ttf b/app/src/main/assets/fonts/San Francisco Regular.ttf
index 39d2415..a671eef 100644
Binary files a/app/src/main/assets/fonts/San Francisco Regular.ttf and b/app/src/main/assets/fonts/San Francisco Regular.ttf differ
diff --git a/app/src/main/java/com/nightonke/blurlockviewsample/SettingsActivity.java b/app/src/main/java/com/nightonke/blurlockviewsample/SettingsActivity.java
index 5da0a51..22b1353 100644
--- a/app/src/main/java/com/nightonke/blurlockviewsample/SettingsActivity.java
+++ b/app/src/main/java/com/nightonke/blurlockviewsample/SettingsActivity.java
@@ -1,9 +1,13 @@
 package com.nightonke.blurlockviewsample;
 
 import android.content.Intent;
+import android.net.Uri;
 import android.support.design.widget.FloatingActionButton;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.EditText;
@@ -20,10 +24,11 @@
     private SeekBar hideDuration;
     private TextView hideDurationTextView;
 
-    private RadioButton[] showDirections = new RadioButton[4];
-    private RadioButton[] hideDirections = new RadioButton[4];
-    
-    private RadioButton[] easeTypes = new RadioButton[31];
+    private RadioButton[] showDirections = new RadioButton[5];
+    private RadioButton[] hideDirections = new RadioButton[5];
+
+    private RadioButton[] showEaseTypes = new RadioButton[31];
+    private RadioButton[] hideEaseTypes = new RadioButton[31];
 
     private FloatingActionButton go;
 
@@ -34,11 +39,11 @@ protected void onCreate(Bundle savedInstanceState) {
 
         showDuration = (SeekBar)findViewById(R.id.show_duration);
         showDurationTextView = (TextView)findViewById(R.id.show_duration_text);
-        showDurationTextView.setText((showDuration.getProgress() * 500 + 1000) + "ms");
+        showDurationTextView.setText((showDuration.getProgress() * 500) + "ms");
         showDuration.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
             @Override
             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-                showDurationTextView.setText((progress * 500 + 1000) + "ms");
+                showDurationTextView.setText((progress * 500) + "ms");
             }
 
             @Override
@@ -54,11 +59,11 @@ public void onStopTrackingTouch(SeekBar seekBar) {
 
         hideDuration = (SeekBar)findViewById(R.id.hide_duration);
         hideDurationTextView = (TextView)findViewById(R.id.hide_duration_text);
-        hideDurationTextView.setText((hideDuration.getProgress() * 500 + 1000) + "ms");
+        hideDurationTextView.setText((hideDuration.getProgress() * 500) + "ms");
         hideDuration.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
             @Override
             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-                hideDurationTextView.setText((progress * 500 + 1000) + "ms");
+                hideDurationTextView.setText((progress * 500) + "ms");
             }
 
             @Override
@@ -73,7 +78,7 @@ public void onStopTrackingTouch(SeekBar seekBar) {
         });
 
         String[] showDirectionsArray = getResources().getStringArray(R.array.show_direction);
-        for (int i = 0; i < 4; i++) {
+        for (int i = 0; i < 5; i++) {
             showDirections[i] = new RadioButton(this);
             showDirections[i].setText(showDirectionsArray[i]);
             showDirections[i].setLayoutParams(new ViewGroup.LayoutParams(
@@ -84,7 +89,7 @@ public void onStopTrackingTouch(SeekBar seekBar) {
         showDirections[0].setChecked(true);
 
         String[] hideDirectionsArray = getResources().getStringArray(R.array.hide_direction);
-        for (int i = 0; i < 4; i++) {
+        for (int i = 0; i < 5; i++) {
             hideDirections[i] = new RadioButton(this);
             hideDirections[i].setText(hideDirectionsArray[i]);
             hideDirections[i].setLayoutParams(new ViewGroup.LayoutParams(
@@ -94,16 +99,27 @@ public void onStopTrackingTouch(SeekBar seekBar) {
         }
         hideDirections[0].setChecked(true);
 
-        String[] easeTypesArray = getResources().getStringArray(R.array.ease_type);
+        String[] showEaseTypesArray = getResources().getStringArray(R.array.ease_type);
+        for (int i = 0; i < 31; i++) {
+            showEaseTypes[i] = new RadioButton(this);
+            showEaseTypes[i].setText(showEaseTypesArray[i]);
+            showEaseTypes[i].setLayoutParams(new ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT));
+            ((ViewGroup) findViewById(R.id.show_ease_type)).addView(showEaseTypes[i]);
+        }
+        showEaseTypes[30].setChecked(true);
+
+        String[] hideEaseTypesArray = getResources().getStringArray(R.array.ease_type);
         for (int i = 0; i < 31; i++) {
-            easeTypes[i] = new RadioButton(this);
-            easeTypes[i].setText(easeTypesArray[i]);
-            easeTypes[i].setLayoutParams(new ViewGroup.LayoutParams(
+            hideEaseTypes[i] = new RadioButton(this);
+            hideEaseTypes[i].setText(hideEaseTypesArray[i]);
+            hideEaseTypes[i].setLayoutParams(new ViewGroup.LayoutParams(
                     ViewGroup.LayoutParams.MATCH_PARENT,
                     ViewGroup.LayoutParams.WRAP_CONTENT));
-            ((ViewGroup) findViewById(R.id.group_ease_type)).addView(easeTypes[i]);
+            ((ViewGroup) findViewById(R.id.hide_ease_type)).addView(hideEaseTypes[i]);
         }
-        easeTypes[30].setChecked(true);
+        hideEaseTypes[30].setChecked(true);
 
         go = (FloatingActionButton)findViewById(R.id.go);
         go.setOnClickListener(new View.OnClickListener() {
@@ -124,13 +140,21 @@ public void onClick(View v) {
 
                 Intent intent = new Intent(SettingsActivity.this, ShowActivity.class);
                 intent.putExtra("PASSWORD_TYPE", getPasswordType());
-                intent.putExtra("SHOW_DURATION", showDuration.getProgress() * 500 + 1000);
-                intent.putExtra("HIDE_DURATION", hideDuration.getProgress() * 500 + 1000);
+                intent.putExtra("SHOW_DURATION", showDuration.getProgress() * 500);
+                intent.putExtra("HIDE_DURATION", hideDuration.getProgress() * 500);
                 intent.putExtra("SHOW_DIRECTION", getShowDirection());
                 intent.putExtra("HIDE_DIRECTION", getHideDirection());
-                intent.putExtra("EASE_TYPE", getEaseType());
+                intent.putExtra("SHOW_EASE_TYPE", getShowEaseType());
+                intent.putExtra("HIDE_EASE_TYPE", getHideEaseType());
                 intent.putExtra("PASSWORD",
                         ((EditText)findViewById(R.id.password)).getText().toString());
+                intent.putExtra("TITLE",
+                        ((EditText)findViewById(R.id.title)).getText().toString());
+                intent.putExtra("LEFT_BUTTON",
+                        ((EditText)findViewById(R.id.left_button)).getText().toString());
+                intent.putExtra("RIGHT_BUTTON",
+                        ((EditText)findViewById(R.id.right_button)).getText().toString());
+                intent.putExtra("TYPEFACE", getTypeface());
                 startActivity(intent);
             }
         });
@@ -144,18 +168,56 @@ private String getPasswordType() {
         return "";
     }
 
+    private String getTypeface() {
+        switch (((RadioGroup)findViewById(R.id.group_typeface)).getCheckedRadioButtonId()) {
+            case R.id.san: return "SAN";
+            case R.id.default_typeface: return "DEFAULT";
+        }
+        return "";
+    }
+
     private int getShowDirection() {
-        for (int i = 0; i < 4; i++) if (showDirections[i].isChecked()) return i;
+        for (int i = 0; i < showDirections.length; i++)
+            if (showDirections[i].isChecked()) return i;
         return 0;
     }
 
     private int getHideDirection() {
-        for (int i = 0; i < 4; i++) if (hideDirections[i].isChecked()) return i;
+        for (int i = 0; i < hideDirections.length; i++)
+            if (hideDirections[i].isChecked()) return i;
         return 0;
     }
 
-    private int getEaseType() {
-        for (int i = 0; i < 31; i++) if (easeTypes[i].isChecked()) return i;
+    private int getShowEaseType() {
+        for (int i = 0; i < 31; i++) if (showEaseTypes[i].isChecked()) return i;
         return 0;
     }
+
+    private int getHideEaseType() {
+        for (int i = 0; i < 31; i++) if (hideEaseTypes[i].isChecked()) return i;
+        return 0;
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.menu, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_github:
+                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(
+                        "https://github.com/Nightonke/BlurLockView")));
+                return true;
+            case R.id.action_developer:
+                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(
+                        "https://github.com/Nightonke")));
+                return true;
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
 }
diff --git a/app/src/main/java/com/nightonke/blurlockviewsample/ShowActivity.java b/app/src/main/java/com/nightonke/blurlockviewsample/ShowActivity.java
index 99958c8..8c5a18c 100644
--- a/app/src/main/java/com/nightonke/blurlockviewsample/ShowActivity.java
+++ b/app/src/main/java/com/nightonke/blurlockviewsample/ShowActivity.java
@@ -1,13 +1,20 @@
 package com.nightonke.blurlockviewsample;
 
+import android.graphics.Typeface;
 import android.os.Bundle;
+import android.support.annotation.ColorInt;
+import android.support.annotation.NonNull;
 import android.support.v7.app.AppCompatActivity;
+import android.text.InputType;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.widget.ImageView;
 import android.widget.Toast;
 
+import com.afollestad.materialdialogs.DialogAction;
+import com.afollestad.materialdialogs.MaterialDialog;
+import com.afollestad.materialdialogs.color.ColorChooserDialog;
 import com.nightonke.blurlockview.BlurLockView;
 import com.nightonke.blurlockview.Directions.HideType;
 import com.nightonke.blurlockview.Directions.ShowType;
@@ -18,10 +25,11 @@
         implements
         View.OnClickListener,
         BlurLockView.OnPasswordInputListener,
-        BlurLockView.OnLeftButtonClickListener {
+        BlurLockView.OnLeftButtonClickListener,
+        ColorChooserDialog.ColorCallback {
 
     private BlurLockView blurLockView;
-    private ImageView imageView;
+    private ImageView imageView1;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -33,17 +41,23 @@ protected void onCreate(Bundle savedInstanceState) {
 
         setContentView(R.layout.activity_show);
 
-        imageView = (ImageView)findViewById(R.id.image);
+        imageView1 = (ImageView)findViewById(R.id.image_1);
 
         blurLockView = (BlurLockView)findViewById(R.id.blurlockview);
-        blurLockView.setBlurredView(imageView);
+
+        blurLockView.setBlurredView(imageView1);
+
         blurLockView.setCorrectPassword(getIntent().getStringExtra("PASSWORD"));
+        blurLockView.setTitle(getIntent().getStringExtra("TITLE"));
+        blurLockView.setLeftButton(getIntent().getStringExtra("LEFT_BUTTON"));
+        blurLockView.setRightButton(getIntent().getStringExtra("RIGHT_BUTTON"));
+        blurLockView.setTypeface(getTypeface());
         blurLockView.setType(getPasswordType(), false);
 
         blurLockView.setOnLeftButtonClickListener(this);
         blurLockView.setOnPasswordInputListener(this);
 
-        imageView.setOnClickListener(this);
+        imageView1.setOnClickListener(this);
     }
 
     private Password getPasswordType() {
@@ -54,6 +68,14 @@ else if ("PASSWORD_NUMBER".equals(getIntent().getStringExtra("PASSWORD_TYPE")))
         return Password.NUMBER;
     }
 
+    private Typeface getTypeface() {
+        if ("SAN".equals(getIntent().getStringExtra("TYPEFACE")))
+            return Typeface.createFromAsset(getAssets(),"fonts/San Francisco Regular.ttf");
+        else if ("DEFAULT".equals(getIntent().getStringExtra("TYPEFACE")))
+            return Typeface.DEFAULT;
+        return Typeface.DEFAULT;
+    }
+
     @Override
     public void correct(String inputPassword) {
         Toast.makeText(this,
@@ -62,7 +84,7 @@ public void correct(String inputPassword) {
         blurLockView.hide(
                 getIntent().getIntExtra("HIDE_DURATION", 1000),
                 getHideType(getIntent().getIntExtra("HIDE_DIRECTION", 0)),
-                getEaseType(getIntent().getIntExtra("EASE_TYPE", 30)));
+                getEaseType(getIntent().getIntExtra("HIDE_EASE_TYPE", 30)));
     }
 
     @Override
@@ -80,28 +102,140 @@ public void input(String inputPassword) {
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
-            case R.id.image:
+            case R.id.image_1:
                 blurLockView.show(
                         getIntent().getIntExtra("SHOW_DURATION", 1000),
                         getShowType(getIntent().getIntExtra("SHOW_DIRECTION", 0)),
-                        getEaseType(getIntent().getIntExtra("EASE_TYPE", 30)));
+                        getEaseType(getIntent().getIntExtra("SHOW_EASE_TYPE", 30)));
                 break;
         }
     }
 
     @Override
     public void onClick() {
-        if (Password.NUMBER.equals(blurLockView.getType())) {
-            blurLockView.setType(Password.TEXT, true);
-        } else if (Password.TEXT.equals(blurLockView.getType())) {
-            blurLockView.setType(Password.NUMBER, true);
-        }
-//        blurLockView.hide(
-//                getIntent().getIntExtra("HIDE_DURATION", 1000),
-//                getHideType(getIntent().getIntExtra("HIDE_DIRECTION", 0)),
-//                getEaseType(getIntent().getIntExtra("EASE_TYPE", 30)));
+        new MaterialDialog.Builder(this)
+                .title(R.string.operations)
+                .items(R.array.operations)
+                .itemsCallbackSingleChoice(-1, new MaterialDialog.ListCallbackSingleChoice() {
+                    @Override
+                    public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
+                        switch (which) {
+                            case 0:
+                                blurLockView.show(
+                                        getIntent().getIntExtra("SHOW_DURATION", 1000),
+                                        getShowType(getIntent().getIntExtra("SHOW_DIRECTION", 0)),
+                                        getEaseType(getIntent().getIntExtra("SHOW_EASE_TYPE", 30)));
+                                break;
+                            case 1:
+                                blurLockView.hide(
+                                        getIntent().getIntExtra("HIDE_DURATION", 1000),
+                                        getHideType(getIntent().getIntExtra("HIDE_DIRECTION", 0)),
+                                        getEaseType(getIntent().getIntExtra("HIDE_EASE_TYPE", 30)));
+                                break;
+                            case 2:
+                                setBlurRadius();
+                                break;
+                            case 3:
+                                setDownsamepleFactor();
+                                break;
+                            case 4:
+                                setOverlayColor();
+                                break;
+                            case 5:
+                                if (Password.NUMBER.equals(blurLockView.getType())) {
+                                    blurLockView.setType(Password.TEXT, true);
+                                } else if (Password.TEXT.equals(blurLockView.getType())) {
+                                    blurLockView.setType(Password.NUMBER, true);
+                                }
+                                break;
+
+                        }
+                        return true;
+                    }
+                })
+                .show();
+    }
+
+    private int radius;
+    private void setBlurRadius() {
+        new MaterialDialog.Builder(this)
+                .title(R.string.set_blur_radius_title)
+                .inputType(InputType.TYPE_CLASS_NUMBER)
+                .positiveText(R.string.ok)
+                .alwaysCallInputCallback()
+                .input(
+                        "[1, 20]",
+                        blurLockView.getBlurRadius() + "",
+                        new MaterialDialog.InputCallback() {
+                    @Override
+                    public void onInput(MaterialDialog dialog, CharSequence input) {
+                        radius = -1;
+                        try {
+                            radius = Integer.parseInt(String.valueOf(input));
+                        } catch (NumberFormatException n) {
+                            radius = -1;
+                        }
+                        if (!(1 <= radius && radius <= 20))
+                            dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
+                        else
+                            dialog.getActionButton(DialogAction.POSITIVE).setEnabled(true);
+                    }
+                })
+                .onAny(new MaterialDialog.SingleButtonCallback() {
+                    @Override
+                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
+                        if (which == DialogAction.POSITIVE) {
+                            blurLockView.setBlurRadius(radius);
+                        }
+                    }
+                })
+                .show();
     }
-    
+
+    private int downsamepleFactor;
+    private void setDownsamepleFactor() {
+        new MaterialDialog.Builder(this)
+                .title(R.string.set_downsample_factor_title)
+                .inputType(InputType.TYPE_CLASS_NUMBER)
+                .positiveText(R.string.ok)
+                .alwaysCallInputCallback()
+                .input(
+                        "[1, 20]",
+                        blurLockView.getDownsampleFactor() + "",
+                        new MaterialDialog.InputCallback() {
+                            @Override
+                            public void onInput(MaterialDialog dialog, CharSequence input) {
+                                downsamepleFactor = -1;
+                                try {
+                                    downsamepleFactor = Integer.parseInt(String.valueOf(input));
+                                } catch (NumberFormatException n) {
+                                    downsamepleFactor = -1;
+                                }
+                                if (!(1 <= downsamepleFactor && downsamepleFactor <= 20))
+                                    dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
+                                else
+                                    dialog.getActionButton(DialogAction.POSITIVE).setEnabled(true);
+                            }
+                        })
+                .onAny(new MaterialDialog.SingleButtonCallback() {
+                    @Override
+                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
+                        if (which == DialogAction.POSITIVE) {
+                            blurLockView.setDownsampleFactor(downsamepleFactor);
+                        }
+                    }
+                })
+                .show();
+    }
+
+    private void setOverlayColor() {
+        new ColorChooserDialog.Builder(this, R.string.set_overlay_color)
+                .titleSub(R.string.set_overlay_color)
+                .doneButton(R.string.ok)
+                .preselect(blurLockView.getOverlayColor())
+                .show();
+    }
+
     private ShowType getShowType(int p) {
         ShowType showType = ShowType.FROM_TOP_TO_BOTTOM;
         switch (p) {
@@ -109,19 +243,21 @@ private ShowType getShowType(int p) {
             case 1: showType = ShowType.FROM_RIGHT_TO_LEFT; break;
             case 2: showType = ShowType.FROM_BOTTOM_TO_TOP; break;
             case 3: showType = ShowType.FROM_LEFT_TO_RIGHT; break;
+            case 4: showType = ShowType.FADE_IN; break;
         }
         return showType;
     }
 
     private HideType getHideType(int p) {
-        HideType showType = HideType.FROM_TOP_TO_BOTTOM;
+        HideType hideType = HideType.FROM_TOP_TO_BOTTOM;
         switch (p) {
-            case 0: showType = HideType.FROM_TOP_TO_BOTTOM; break;
-            case 1: showType = HideType.FROM_RIGHT_TO_LEFT; break;
-            case 2: showType = HideType.FROM_BOTTOM_TO_TOP; break;
-            case 3: showType = HideType.FROM_LEFT_TO_RIGHT; break;
+            case 0: hideType = HideType.FROM_TOP_TO_BOTTOM; break;
+            case 1: hideType = HideType.FROM_RIGHT_TO_LEFT; break;
+            case 2: hideType = HideType.FROM_BOTTOM_TO_TOP; break;
+            case 3: hideType = HideType.FROM_LEFT_TO_RIGHT; break;
+            case 4: hideType = HideType.FADE_OUT; break;
         }
-        return showType;
+        return hideType;
     }
 
     private EaseType getEaseType(int p) {
@@ -161,4 +297,9 @@ private EaseType getEaseType(int p) {
         }
         return easeType;
     }
+
+    @Override
+    public void onColorSelection(@NonNull ColorChooserDialog dialog, @ColorInt int selectedColor) {
+        blurLockView.setOverlayColor(selectedColor);
+    }
 }
diff --git a/app/src/main/res/drawable/image_1.jpg b/app/src/main/res/drawable/image_1.jpg
new file mode 100644
index 0000000..7dce950
Binary files /dev/null and b/app/src/main/res/drawable/image_1.jpg differ
diff --git a/app/src/main/res/drawable/ok.png b/app/src/main/res/drawable/ok.png
deleted file mode 100644
index a9b356a..0000000
Binary files a/app/src/main/res/drawable/ok.png and /dev/null differ
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index a16f82e..ccd4cee 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -67,7 +67,7 @@
                 android:id="@+id/show_duration"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:max="8"
+                android:max="10"
                 android:progress="0"
                 />
 
@@ -92,7 +92,7 @@
                 android:id="@+id/hide_duration"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:max="8"
+                android:max="10"
                 android:progress="0"
                 />
 
@@ -138,7 +138,7 @@
                 >
 
             </RadioGroup>
-            
+
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -149,13 +149,56 @@
                 android:layout_marginTop="20dp"
                 />
 
-            <RadioGroup
-                android:id="@+id/group_ease_type"
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:layout_marginTop="10dp"
                 >
 
-            </RadioGroup>
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="@android:color/black"
+                    android:text="@string/show_ease_type"
+                    android:textStyle="bold"
+                    android:textSize="15sp"
+                    />
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="@android:color/black"
+                    android:text="@string/hide_ease_type"
+                    android:textStyle="bold"
+                    android:textSize="15sp"
+                    />
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                >
+
+                <RadioGroup
+                    android:id="@+id/show_ease_type"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    />
+
+                <RadioGroup
+                    android:id="@+id/hide_ease_type"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    />
+
+            </LinearLayout>
 
             <TextView
                 android:layout_width="match_parent"
@@ -173,9 +216,99 @@
                 android:layout_height="wrap_content"
                 android:maxLines="1"
                 android:hint="@string/password_hint"
-                android:text="1234"
+                android:text="@string/password_default"
+                />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textColor="@android:color/black"
+                android:text="@string/set_title"
+                android:textStyle="bold"
+                android:textSize="20sp"
+                android:layout_marginTop="20dp"
+                />
+
+            <EditText
+                android:id="@+id/title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:maxLines="1"
+                android:hint="@string/title_hint"
+                android:text="@string/title_default"
+                />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textColor="@android:color/black"
+                android:text="@string/set_left_button_text"
+                android:textStyle="bold"
+                android:textSize="20sp"
+                android:layout_marginTop="20dp"
+                />
+
+            <EditText
+                android:id="@+id/left_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:maxLines="1"
+                android:hint="@string/left_button_text_hint"
+                android:text="@string/left_button_text_default"
+                />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textColor="@android:color/black"
+                android:text="@string/set_right_button_text"
+                android:textStyle="bold"
+                android:textSize="20sp"
+                android:layout_marginTop="20dp"
+                />
+
+            <EditText
+                android:id="@+id/right_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:maxLines="1"
+                android:hint="@string/right_button_text_hint"
+                android:text="@string/right_button_text_default"
+                />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textColor="@android:color/black"
+                android:text="@string/set_typeface"
+                android:textStyle="bold"
+                android:textSize="20sp"
+                android:layout_marginTop="20dp"
                 />
 
+            <RadioGroup
+                android:id="@+id/group_typeface"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+
+                <RadioButton
+                    android:id="@+id/san"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/san_francisco_regular"
+                    android:checked="true"
+                    />
+
+                <RadioButton
+                    android:id="@+id/default_typeface"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/default_typeface"
+                    />
+
+            </RadioGroup>
+
         </LinearLayout>
 
     </ScrollView>
@@ -184,7 +317,6 @@
         android:id="@+id/go"
         android:layout_width="56dp"
         android:layout_height="56dp"
-        android:src="@drawable/ok"
         android:scaleType="center"
         android:layout_gravity="bottom|end"
         android:layout_marginBottom="20dp"
diff --git a/app/src/main/res/layout/activity_show.xml b/app/src/main/res/layout/activity_show.xml
index c4efef7..1d08aee 100644
--- a/app/src/main/res/layout/activity_show.xml
+++ b/app/src/main/res/layout/activity_show.xml
@@ -7,11 +7,11 @@
     android:clickable="true">
 
     <ImageView
-        android:id="@+id/image"
+        android:id="@+id/image_1"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:src="@drawable/test_background"
-        />
+        android:src="@drawable/image_1"
+        android:scaleType="centerCrop"/>
 
     <TextView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml
new file mode 100644
index 0000000..368a0e0
--- /dev/null
+++ b/app/src/main/res/menu/menu.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <group android:id="@+id/group1">
+        <item
+            android:id="@+id/action_github"
+            android:title="Github"/>
+
+        <item
+            android:id="@+id/action_developer"
+            android:title="Developer"/>
+    </group>
+
+</menu>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index cde69bc..1b5e252 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index c133a0c..6239183 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index bfa42f0..7b6a962 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 324e72c..a97f88f 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index aee44e1..9b22e20 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 8de340b..2e0594d 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -2,12 +2,25 @@
 <resources>
 
     <string-array
+        name="operations">
+
+        <item>Show Blur View</item>
+        <item>Hide Blur View</item>
+        <item>Set Blur Radius</item>
+        <item>Set Downsample Factor</item>
+        <item>Set Overlay Color</item>
+        <item>Change Password Type</item>
+
+    </string-array>
+
+    <string-array
         name="show_direction">
 
         <item>From top to bottom</item>
         <item>From right to left</item>
         <item>From bottom to top</item>
         <item>From left to right</item>
+        <item>Fade In</item>
 
     </string-array>
 
@@ -18,6 +31,7 @@
         <item>From right to left</item>
         <item>From bottom to top</item>
         <item>From left to right</item>
+        <item>Fade Out</item>
 
     </string-array>
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 411df00..a63f9d5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -11,18 +11,51 @@
     <string name="show_direction">Show Direction</string>
     <string name="hide_direction">hide Direction</string>
 
-    <string name="ease_type">Show Ease Type</string>
+    <string name="ease_type">Ease Type</string>
+    <string name="show_ease_type">Show Ease Type</string>
+    <string name="hide_ease_type">Hide Ease Type</string>
 
     <string name="set_password">Set Password</string>
     <string name="password_hint">Write your password here</string>
     <string name="password_is_empty">Please input the password</string>
     <string name="password_too_long">Password too long</string>
+    <string name="password_default">1234</string>
+
+    <string name="set_title">Set Title</string>
+    <string name="title_hint">Write your title here</string>
+    <string name="title_is_empty">Please input the title</string>
+    <string name="title_too_long">Title too long</string>
+    <string name="title_default">Blur Lock</string>
+
+    <string name="set_left_button_text">Set Left Button</string>
+    <string name="left_button_text_hint">Write your text of left button here</string>
+    <string name="left_button_text_is_empty">Please input the text of left button</string>
+    <string name="left_button_text_too_long">Text of left button too long</string>
+    <string name="left_button_text_default">Operations</string>
+
+    <string name="set_right_button_text">Set Right Button</string>
+    <string name="right_button_text_hint">Backspace is suggested</string>
+    <string name="right_button_text_is_empty">Please input the text of right button</string>
+    <string name="right_button_text_too_long">Text of right button too long</string>
+    <string name="right_button_text_default">Backspace</string>
+
+    <string name="set_typeface">Set Typeface</string>
+    <string name="san_francisco_regular">San Francisco Regular</string>
+    <string name="default_typeface">Default</string>
 
     <string name="click_to_show">Click to show BlurLockView</string>
 
     <string name="password_correct">Password correct</string>
     <string name="password_incorrect">Password incorrect</string>
 
+    <string name="operations">Operations</string>
+
+    <string name="set_blur_radius_title">Set Blur Radius</string>
+    <string name="set_downsample_factor_title">Set Downsample Factor</string>
+    <string name="set_overlay_color">Set Overlay Color</string>
+
+    <string name="ok">OK</string>
+
 
 
 </resources>
diff --git a/blurlockview/build.gradle b/blurlockview/build.gradle
index 4450699..d28efbe 100644
--- a/blurlockview/build.gradle
+++ b/blurlockview/build.gradle
@@ -1,5 +1,29 @@
 apply plugin: 'com.android.library'
 
+ext {
+    bintrayRepo = 'maven'
+    bintrayName = 'blurlockview'
+
+    publishedGroupId = 'com.nightonke'
+    libraryName = 'blurlockview'
+    artifact = 'blurlockview'
+
+    libraryDescription = 'Lock view with blur effect.'
+
+    siteUrl = 'https://github.com/Nightonke/BlurLockView'
+    gitUrl = 'https://github.com/Nightonke/BlurLockView.git'
+
+    libraryVersion = '1.0.0'
+
+    developerId = 'nightonke'
+    developerName = 'Weiping Huang'
+    developerEmail = 'nightonke@outlook.com'
+
+    licenseName = 'The Apache Software License, Version 2.0'
+    licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+    allLicenses = ["Apache-2.0"]
+}
+
 android {
     compileSdkVersion 23
     buildToolsVersion "23.0.2"
@@ -8,7 +32,7 @@ android {
         minSdkVersion 17
         targetSdkVersion 23
         versionCode 1
-        versionName "1.0"
+        versionName "1.0.0"
     }
     buildTypes {
         release {
@@ -23,3 +47,6 @@ dependencies {
     testCompile 'junit:junit:4.12'
     compile 'com.android.support:appcompat-v7:23.2.0'
 }
+
+apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
+apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
\ No newline at end of file
diff --git a/blurlockview/src/main/java/com/nightonke/blurlockview/BigButtonView.java b/blurlockview/src/main/java/com/nightonke/blurlockview/BigButtonView.java
index c2121b1..c4f9176 100644
--- a/blurlockview/src/main/java/com/nightonke/blurlockview/BigButtonView.java
+++ b/blurlockview/src/main/java/com/nightonke/blurlockview/BigButtonView.java
@@ -13,7 +13,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 
 /**
@@ -193,16 +192,8 @@ public void setSubText(String subTextString) {
     public void setSubTextVisibility(int visibility) {
         if (visibility == GONE) {
             text.setGravity(Gravity.CENTER);
-            text.setLayoutParams(new LinearLayout.LayoutParams(
-                    LinearLayout.LayoutParams.MATCH_PARENT,
-                    0,
-                    10));
         } else {
             text.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
-            text.setLayoutParams(new LinearLayout.LayoutParams(
-                    LinearLayout.LayoutParams.MATCH_PARENT,
-                    0,
-                    7));
         }
         subText.setVisibility(visibility);
     }
diff --git a/blurlockview/src/main/java/com/nightonke/blurlockview/BlurLockView.java b/blurlockview/src/main/java/com/nightonke/blurlockview/BlurLockView.java
index 5d95bee..8344b51 100644
--- a/blurlockview/src/main/java/com/nightonke/blurlockview/BlurLockView.java
+++ b/blurlockview/src/main/java/com/nightonke/blurlockview/BlurLockView.java
@@ -9,7 +9,6 @@
 import android.content.res.Resources;
 import android.graphics.Point;
 import android.graphics.Typeface;
-import android.inputmethodservice.AbstractInputMethodService;
 import android.support.v4.content.ContextCompat;
 import android.util.AttributeSet;
 import android.view.Display;
@@ -431,6 +430,69 @@ public boolean dispatchTouchEvent(MotionEvent event) {
     }
 
     /**
+     * Set big buttons' background.
+     *
+     * @param id
+     */
+    public void setBigButtonViewsBackground(int id) {
+        for (int i = 0; i < 10; i++) bigButtonViews[i].setBackground(id);
+    }
+
+    /**
+     * Set big buttons' click effect.
+     *
+     * @param id
+     */
+    public void setBigButtonViewsClickEffect(int id) {
+        for (int i = 0; i < 10; i++) bigButtonViews[i].setEffect(id);
+    }
+
+    /**
+     * Set the click effect duration.
+     *
+     * @param duration
+     */
+    public void setBigButtonViewsClickEffectDuration(int duration) {
+        for (int i = 0; i < 10; i++) bigButtonViews[i].setEffectDuration(duration);
+    }
+
+    /**
+     * Set small buttons' background.
+     *
+     * @param id
+     */
+    public void setSmallButtonViewsBackground(int id) {
+        for (int i = 0; i < smallButtonViews.length; i++)
+            for (int j = 0; j < smallButtonViews[i].length; j++)
+                if (smallButtonViews[i][j] != null)
+                    smallButtonViews[i][j].setBackground(id);
+    }
+
+    /**
+     * Set small buttons' click effect.
+     *
+     * @param id
+     */
+    public void setSmallButtonViewsClickEffect(int id) {
+        for (int i = 0; i < smallButtonViews.length; i++)
+            for (int j = 0; j < smallButtonViews[i].length; j++)
+                if (smallButtonViews[i][j] != null)
+                    smallButtonViews[i][j].setEffect(id);
+    }
+
+    /**
+     * Set the click effect duration.
+     *
+     * @param duration
+     */
+    public void setSmallButtonViewsClickEffectDuration(int duration) {
+        for (int i = 0; i < smallButtonViews.length; i++)
+            for (int j = 0; j < smallButtonViews[i].length; j++)
+                if (smallButtonViews[i][j] != null)
+                    smallButtonViews[i][j].setEffectDuration(duration);
+    }
+    
+    /**
      * Set all the fonts.
      *
      * @param typeface
@@ -439,6 +501,11 @@ public void setTypeface(Typeface typeface) {
         this.typeface = typeface;
         if (type.equals(Password.NUMBER)) {
             for (int i = 0; i < 10; i++) bigButtonViews[i].setTypeFace(typeface);
+        } else if (type.equals(Password.TEXT)) {
+            for (int i = 0; i < smallButtonViews.length; i++)
+                for (int j = 0; j < smallButtonViews[i].length; j++)
+                    if (smallButtonViews[i][j] != null)
+                        smallButtonViews[i][j].setTypeFace(typeface);
         }
         title.setTypeface(typeface);
         leftButton.setTypeface(typeface);
@@ -456,6 +523,11 @@ public void setTextColor(int color) {
                 bigButtonViews[i].setTextColor(color);
                 bigButtonViews[i].setSubTextColor(color);
             }
+        } else if (type.equals(Password.TEXT)) {
+            for (int i = 0; i < smallButtonViews.length; i++)
+                for (int j = 0; j < smallButtonViews[i].length; j++)
+                    if (smallButtonViews[i][j] != null)
+                        smallButtonViews[i][j].setTextColor(color);
         }
         title.setTextColor(color);
         leftButton.setTextColor(color);
@@ -593,6 +665,10 @@ public void show(int duration, ShowType showType, EaseType easeType) {
             animator = ObjectAnimator.ofFloat(this, "translationX",
                     getTranslationX() - getWidth(),
                     getTranslationX());
+        } else if (showType.equals(ShowType.FADE_IN)) {
+            animator = ObjectAnimator.ofFloat(this, "alpha",
+                    0,
+                    1);
         }
         animator.setDuration(duration);
         animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@@ -641,6 +717,10 @@ public void hide(int duration, HideType hideType, EaseType easeType) {
             animator = ObjectAnimator.ofFloat(this, "translationX",
                     getTranslationX(),
                     getTranslationX() + getWidth());
+        } else if (hideType.equals(HideType.FADE_OUT)) {
+            animator = ObjectAnimator.ofFloat(this, "alpha",
+                    1,
+                    0);
         }
         animator.setDuration(duration);
         animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@@ -656,6 +736,7 @@ public void onAnimationEnd(Animator animation) {
                 setVisibility(INVISIBLE);
                 setTranslationX(originalX);
                 setTranslationY(originalY);
+                setAlpha(1);
                 animationIsPlaying = false;
             }
         });
@@ -673,23 +754,93 @@ public void onAnimationEnd(Animator animation) {
         void onClick();
     }
 
+    /**
+     * Get the title.
+     * @return
+     */
     public TextView getTitle() {
         return title;
     }
 
+    /**
+     * Get the left button.
+     * @return
+     */
     public TextView getLeftButton() {
         return leftButton;
     }
 
+    /**
+     * Get the right button.
+     * @return
+     */
     public TextView getRightButton() {
         return rightButton;
     }
 
+    /**
+     * Get the numbers.
+     * @return
+     */
     public BigButtonView[] getBigButtonViews() {
         return bigButtonViews;
     }
 
+    /**
+     * Get the texts.
+     * @return
+     */
     public SmallButtonView[][] getSmallButtonViews() {
         return smallButtonViews;
     }
+
+    /**
+     * Set the blur radius.
+     */
+    public void setBlurRadius(int blurRadius) {
+        mBlurView.setBlurRadius(blurRadius);
+        update();
+    }
+
+    /**
+     * Get the blur radius.
+     * @return
+     */
+    public int getBlurRadius() {
+        return mBlurView.getBlurRadius();
+    }
+
+    /**
+     * Set the downsample factor.
+     * @param downsampleFactor
+     */
+    public void setDownsampleFactor(int downsampleFactor) {
+        mBlurView.setDownsampleFactor(downsampleFactor);
+        update();
+    }
+
+    /**
+     * Get the downsample factor.
+     * @return
+     */
+    public int getDownsampleFactor() {
+        return mBlurView.getDownsampleFactor();
+    }
+
+    /**
+     * Set the overlay color.
+     * @param color
+     */
+    public void setOverlayColor(int color) {
+        mBlurView.setOverlayColor(color);
+        update();
+    }
+
+    /**
+     * Get the overlay color.
+     * @return
+     */
+    public int getOverlayColor() {
+        return mBlurView.getmOverlayColor();
+    }
 }
diff --git a/blurlockview/src/main/java/com/nightonke/blurlockview/BlurView.java b/blurlockview/src/main/java/com/nightonke/blurlockview/BlurView.java
index ac1f6e2..d9c872c 100644
--- a/blurlockview/src/main/java/com/nightonke/blurlockview/BlurView.java
+++ b/blurlockview/src/main/java/com/nightonke/blurlockview/BlurView.java
@@ -12,7 +12,6 @@
 import android.renderscript.RenderScript;
 import android.renderscript.ScriptIntrinsicBlur;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.View;
 
 /**
@@ -20,6 +19,7 @@
  */
 public class BlurView extends View {
 
+    private int mBlurRadius;
     private int mDownsampleFactor;
     private int mOverlayColor;
 
@@ -73,16 +73,17 @@ protected void onDraw(Canvas canvas) {
                     mBitmapToBlur.eraseColor(Color.TRANSPARENT);
                 }
 
+                int[] mBlurredViewXY = new int[2];
+                mBlurredView.getLocationOnScreen(mBlurredViewXY);
+                int[] mBlurringViewXY = new int[2];
+                getLocationOnScreen(mBlurringViewXY);
+
                 mBlurredView.draw(mBlurringCanvas);
                 blur();
 
                 canvas.save();
 
                 // modify here to get the correct bitmap when the blurring view is in a parent
-                int[] mBlurredViewXY = new int[2];
-                mBlurredView.getLocationOnScreen(mBlurredViewXY);
-                int[] mBlurringViewXY = new int[2];
-                getLocationOnScreen(mBlurringViewXY);
                 canvas.translate(mBlurredViewXY[0] - mBlurringViewXY[0], mBlurredViewXY[1] - mBlurringViewXY[1]);
                 canvas.scale(mDownsampleFactor, mDownsampleFactor);
                 canvas.drawBitmap(mBlurredBitmap, 0, 0, null);
@@ -93,7 +94,12 @@ protected void onDraw(Canvas canvas) {
     }
 
     public void setBlurRadius(int radius) {
-        mBlurScript.setRadius(radius);
+        mBlurRadius = radius;
+        mBlurScript.setRadius(mBlurRadius);
+    }
+
+    public int getBlurRadius() {
+        return mBlurRadius;
     }
 
     public void setDownsampleFactor(int factor) {
@@ -107,10 +113,18 @@ public void setDownsampleFactor(int factor) {
         }
     }
 
+    public int getDownsampleFactor() {
+        return mDownsampleFactor;
+    }
+
     public void setOverlayColor(int color) {
         mOverlayColor = color;
     }
 
+    public int getmOverlayColor() {
+        return mOverlayColor;
+    }
+
     private void initializeRenderScript(Context context) {
         mRenderScript = RenderScript.create(context);
         mBlurScript = ScriptIntrinsicBlur.create(mRenderScript, Element.U8_4(mRenderScript));
diff --git a/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/HideType.java b/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/HideType.java
index 655266a..05c1907 100644
--- a/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/HideType.java
+++ b/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/HideType.java
@@ -8,7 +8,8 @@
     FROM_TOP_TO_BOTTOM(0),
     FROM_RIGHT_TO_LEFT(1),
     FROM_BOTTOM_TO_TOP(2),
-    FROM_LEFT_TO_RIGHT(3);
+    FROM_LEFT_TO_RIGHT(3),
+    FADE_OUT(4);
 
     int type;
 
diff --git a/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/ShowType.java b/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/ShowType.java
index 02bc799..f38d6bf 100644
--- a/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/ShowType.java
+++ b/blurlockview/src/main/java/com/nightonke/blurlockview/Directions/ShowType.java
@@ -8,7 +8,8 @@
     FROM_TOP_TO_BOTTOM(0),
     FROM_RIGHT_TO_LEFT(1),
     FROM_BOTTOM_TO_TOP(2),
-    FROM_LEFT_TO_RIGHT(3);
+    FROM_LEFT_TO_RIGHT(3),
+    FADE_IN(4);
 
     int type;
 
diff --git a/blurlockview/src/main/java/com/nightonke/blurlockview/SmallButtonView.java b/blurlockview/src/main/java/com/nightonke/blurlockview/SmallButtonView.java
index fd2e279..8424ad6 100644
--- a/blurlockview/src/main/java/com/nightonke/blurlockview/SmallButtonView.java
+++ b/blurlockview/src/main/java/com/nightonke/blurlockview/SmallButtonView.java
@@ -7,13 +7,11 @@
 import android.support.v4.content.ContextCompat;
 import android.util.AttributeSet;
 import android.util.TypedValue;
-import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 
 /**
diff --git a/blurlockview/src/main/res/layout/big_button_view.xml b/blurlockview/src/main/res/layout/big_button_view.xml
index a58c459..7ebfb9f 100644
--- a/blurlockview/src/main/res/layout/big_button_view.xml
+++ b/blurlockview/src/main/res/layout/big_button_view.xml
@@ -16,18 +16,16 @@
         />
 
     <LinearLayout
-        android:layout_height="match_parent"
+        android:layout_height="wrap_content"
         android:layout_width="match_parent"
         android:orientation="vertical"
         android:layout_gravity="center"
-        android:weightSum="10"
         >
 
         <TextView
             android:id="@+id/text"
-            android:layout_height="0dp"
+            android:layout_height="wrap_content"
             android:layout_width="match_parent"
-            android:layout_weight="7"
             android:text="5"
             android:textSize="35sp"
             android:gravity="center_horizontal|bottom"
@@ -35,10 +33,9 @@
 
         <TextView
             android:id="@+id/sub_text"
-            android:layout_height="0dp"
+            android:layout_height="wrap_content"
             android:layout_width="match_parent"
-            android:layout_weight="3"
-            android:layout_marginTop="-7dp"
+            android:layout_marginTop="-8dp"
             android:text="ABC"
             android:gravity="center_horizontal|top"
             />
diff --git a/blurlockview/src/main/res/values/defaults.xml b/blurlockview/src/main/res/values/defaults.xml
index 4c80ac8..a5f5598 100644
--- a/blurlockview/src/main/res/values/defaults.xml
+++ b/blurlockview/src/main/res/values/defaults.xml
@@ -13,7 +13,7 @@
     <color name="default_small_button_text_color">#ffffff</color>
     <integer name="default_small_button_text_size">12</integer>
 
-    <integer name="default_title_text_size">17</integer>
+    <integer name="default_title_text_size">20</integer>
     <color name="default_title_text_color">#ffffff</color>
     <integer name="default_left_button_text_size">20</integer>
     <color name="default_left_button_text_color">#ffffff</color>
diff --git a/blurlockview/src/main/res/values/styles.xml b/blurlockview/src/main/res/values/styles.xml
index 766ab99..f11f745 100644
--- a/blurlockview/src/main/res/values/styles.xml
+++ b/blurlockview/src/main/res/values/styles.xml
@@ -1,8 +1,3 @@
 <resources>
 
-    <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
-        <!-- Customize your theme here. -->
-    </style>
-
 </resources>
diff --git a/build.gradle b/build.gradle
index ddbf7c1..7e72b79 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,6 +9,9 @@ buildscript {
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
+
+        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
+        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
     }
 }
 
