diff --git a/bottom-bar/build.gradle b/bottom-bar/build.gradle
index ede8814..02fce79 100644
--- a/bottom-bar/build.gradle
+++ b/bottom-bar/build.gradle
@@ -29,7 +29,7 @@ android {
     buildToolsVersion "23.0.2"
 
     defaultConfig {
-        minSdkVersion 14
+        minSdkVersion 8
         targetSdkVersion 23
         versionCode 1
         versionName "1.0"
diff --git a/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java b/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java
index 12888fb..de328f0 100644
--- a/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java
+++ b/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java
@@ -870,10 +870,10 @@ private void selectTab(View tab, boolean animate) {
 
         if (mIsDarkTheme) {
             if (title != null) {
-                title.setAlpha(1.0f);
+                ViewCompat.setAlpha(title, 1.0f);
             }
 
-            icon.setAlpha(1.0f);
+            ViewCompat.setAlpha(icon, 1.0f);
         }
 
         if (title == null) {
@@ -883,18 +883,18 @@ private void selectTab(View tab, boolean animate) {
         int translationY = mIsShiftingMode ? mTenDp : mTwoDp;
 
         if (animate) {
-            title.animate()
+            ViewCompat.animate(title)
                     .setDuration(ANIMATION_DURATION)
                     .scaleX(1)
                     .scaleY(1)
                     .start();
-            tab.animate()
+            ViewCompat.animate(tab)
                     .setDuration(ANIMATION_DURATION)
                     .translationY(-translationY)
                     .start();
 
             if (mIsShiftingMode) {
-                icon.animate()
+                ViewCompat.animate(icon)
                         .setDuration(ANIMATION_DURATION)
                         .alpha(1.0f)
                         .start();
@@ -902,12 +902,12 @@ private void selectTab(View tab, boolean animate) {
 
             handleBackgroundColorChange(tabPosition, tab);
         } else {
-            title.setScaleX(1);
-            title.setScaleY(1);
-            tab.setTranslationY(-translationY);
+            ViewCompat.setScaleX(title, 1);
+            ViewCompat.setScaleY(title, 1);
+            ViewCompat.setTranslationY(tab, -translationY);
 
             if (mIsShiftingMode) {
-                icon.setAlpha(1.0f);
+                ViewCompat.setAlpha(icon, 1.0f);
             }
         }
     }
@@ -929,10 +929,10 @@ private void unselectTab(View tab, boolean animate) {
 
         if (mIsDarkTheme) {
             if (title != null) {
-                title.setAlpha(0.6f);
+                ViewCompat.setAlpha(title, 0.6f);
             }
 
-            icon.setAlpha(0.6f);
+            ViewCompat.setAlpha(icon, 0.6f);
         }
 
         if (title == null) {
@@ -942,29 +942,29 @@ private void unselectTab(View tab, boolean animate) {
         float scale = mIsShiftingMode ? 0 : 0.86f;
 
         if (animate) {
-            title.animate()
+            ViewCompat.animate(title)
                     .setDuration(ANIMATION_DURATION)
                     .scaleX(scale)
                     .scaleY(scale)
                     .start();
-            tab.animate()
+            ViewCompat.animate(tab)
                     .setDuration(ANIMATION_DURATION)
                     .translationY(0)
                     .start();
 
             if (mIsShiftingMode) {
-                icon.animate()
+                ViewCompat.animate(icon)
                         .setDuration(ANIMATION_DURATION)
                         .alpha(0.6f)
                         .start();
             }
         } else {
-            title.setScaleX(scale);
-            title.setScaleY(scale);
-            tab.setTranslationY(0);
+            ViewCompat.setScaleX(title, scale);
+            ViewCompat.setScaleY(title, scale);
+            ViewCompat.setTranslationY(tab, 0);
 
             if (mIsShiftingMode) {
-                icon.setAlpha(0.6f);
+                ViewCompat.setAlpha(icon, 0.6f);
             }
         }
     }
@@ -1010,16 +1010,16 @@ private void updateCurrentFragment() {
                 && mItems instanceof BottomBarFragment[]) {
             BottomBarFragment newFragment = ((BottomBarFragment) mItems[mCurrentTabPosition]);
 
-            if (mFragmentManager instanceof android.app.FragmentManager
-                    && newFragment.getFragment() != null) {
-                ((android.app.FragmentManager) mFragmentManager).beginTransaction()
-                        .replace(mFragmentContainer, newFragment.getFragment())
-                        .commit();
-            } else if (mFragmentManager instanceof android.support.v4.app.FragmentManager
+            if (mFragmentManager instanceof android.support.v4.app.FragmentManager
                     && newFragment.getSupportFragment() != null) {
                 ((android.support.v4.app.FragmentManager) mFragmentManager).beginTransaction()
                         .replace(mFragmentContainer, newFragment.getSupportFragment())
                         .commit();
+            } else if (mFragmentManager instanceof android.app.FragmentManager
+                    && newFragment.getFragment() != null) {
+                ((android.app.FragmentManager) mFragmentManager).beginTransaction()
+                        .replace(mFragmentContainer, newFragment.getFragment())
+                        .commit();
             }
         }
 
diff --git a/bottom-bar/src/main/java/com/roughike/bottombar/MiscUtils.java b/bottom-bar/src/main/java/com/roughike/bottombar/MiscUtils.java
index f73bdcf..f0b2c9c 100644
--- a/bottom-bar/src/main/java/com/roughike/bottombar/MiscUtils.java
+++ b/bottom-bar/src/main/java/com/roughike/bottombar/MiscUtils.java
@@ -10,12 +10,16 @@
 import android.content.res.Resources;
 import android.os.Build;
 import android.support.annotation.MenuRes;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPropertyAnimatorCompat;
+import android.support.v4.view.ViewPropertyAnimatorListenerAdapter;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewAnimationUtils;
+import android.view.ViewPropertyAnimator;
 import android.widget.PopupMenu;
 import android.widget.TextView;
 
@@ -108,14 +112,14 @@ protected static int getScreenWidth(Context context) {
     @TargetApi(Build.VERSION_CODES.LOLLIPOP)
     protected static void animateBGColorChange(View clickedView, final View backgroundView,
                                                final View bgOverlay, final int newColor) {
-        int centerX = (int) (clickedView.getX() + (clickedView.getMeasuredWidth() / 2));
+        int centerX = (int) (ViewCompat.getX(clickedView) + (clickedView.getMeasuredWidth() / 2));
         int centerY = clickedView.getMeasuredHeight() / 2;
         int finalRadius = backgroundView.getWidth();
 
         backgroundView.clearAnimation();
         bgOverlay.clearAnimation();
 
-        Animator animator;
+        Object animator;
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             if (!bgOverlay.isAttachedToWindow()) {
@@ -125,31 +129,52 @@ protected static void animateBGColorChange(View clickedView, final View backgrou
             animator = ViewAnimationUtils
                     .createCircularReveal(bgOverlay, centerX, centerY, 0, finalRadius);
         } else {
-            bgOverlay.setAlpha(0);
-            animator = ObjectAnimator.ofFloat(bgOverlay, "alpha", 0, 1);
+            ViewCompat.setAlpha(bgOverlay, 0);
+            animator = ViewCompat.animate(bgOverlay).alpha(1);
         }
 
-        animator.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                onCancel();
-            }
-
-            @Override
-            public void onAnimationCancel(Animator animation) {
-                onCancel();
-            }
-
-            private void onCancel() {
-                backgroundView.setBackgroundColor(newColor);
-                bgOverlay.setVisibility(View.INVISIBLE);
-                bgOverlay.setAlpha(1);
-            }
-        });
+        if (animator instanceof ViewPropertyAnimatorCompat) {
+            ((ViewPropertyAnimatorCompat) animator).setListener(new ViewPropertyAnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(View view) {
+                    onCancel();
+                }
+
+                @Override
+                public void onAnimationCancel(View view) {
+                    onCancel();
+                }
+
+                private void onCancel() {
+                    backgroundView.setBackgroundColor(newColor);
+                    bgOverlay.setVisibility(View.INVISIBLE);
+                    ViewCompat.setAlpha(bgOverlay, 1);
+                }
+            }).start();
+        } else if (animator != null) {
+            ((Animator) animator).addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    onCancel();
+                }
+
+                @Override
+                public void onAnimationCancel(Animator animation) {
+                    onCancel();
+                }
+
+                private void onCancel() {
+                    backgroundView.setBackgroundColor(newColor);
+                    bgOverlay.setVisibility(View.INVISIBLE);
+                    ViewCompat.setAlpha(bgOverlay, 1);
+                }
+            });
+
+            ((Animator) animator).start();
+        }
 
         bgOverlay.setBackgroundColor(newColor);
         bgOverlay.setVisibility(View.VISIBLE);
-        animator.start();
     }
 
     /**
diff --git a/bottom-bar/src/main/res/layout/bb_bottom_bar_item_container.xml b/bottom-bar/src/main/res/layout/bb_bottom_bar_item_container.xml
index 02dcb8e..7e19241 100644
--- a/bottom-bar/src/main/res/layout/bb_bottom_bar_item_container.xml
+++ b/bottom-bar/src/main/res/layout/bb_bottom_bar_item_container.xml
@@ -19,25 +19,28 @@
 
     </FrameLayout>
 
+    <View
+        android:id="@+id/bb_bottom_bar_background_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignTop="@+id/bb_bottom_bar_outer_container"
+        android:layout_alignBottom="@+id/bb_bottom_bar_outer_container"
+        android:background="#FFFFFF" />
+
+    <View
+        android:id="@+id/bb_bottom_bar_background_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignTop="@+id/bb_bottom_bar_outer_container"
+        android:layout_alignBottom="@+id/bb_bottom_bar_outer_container"
+        android:visibility="invisible" />
+
     <FrameLayout
         android:id="@+id/bb_bottom_bar_outer_container"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true">
 
-        <FrameLayout
-            android:id="@+id/bb_bottom_bar_background_view"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="#FFFFFF" />
-
-        <FrameLayout
-            android:id="@+id/bb_bottom_bar_background_overlay"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:src="@drawable/bb_bottom_bar_top_shadow"
-            android:visibility="invisible" />
-
         <LinearLayout
             android:id="@+id/bb_bottom_bar_item_container"
             android:layout_width="match_parent"
