diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 8b90c5d..0e9fa9a 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -23,15 +23,14 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.Button;
 import android.widget.CompoundButton;
 import android.widget.ToggleButton;
 
 /**
  * Fragment for call control buttons
  */
-public class CallButtonFragment extends BaseFragment<CallButtonPresenter> implements
-        CallButtonPresenter.CallButtonUi {
+public class CallButtonFragment extends BaseFragment<CallButtonPresenter>
+        implements CallButtonPresenter.CallButtonUi {
 
     @Override
     CallButtonPresenter createPresenter() {
@@ -85,9 +84,12 @@
     }
 
     @Override
-    public void setVisible() {
-        Log.e("TEST", "" + getView());
-        getView().setVisibility(View.VISIBLE);
+    public void setVisible(boolean on) {
+        if (on) {
+            getView().setVisibility(View.VISIBLE);
+        } else {
+            getView().setVisibility(View.INVISIBLE);
+        }
     }
 
     @Override
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 122e48d..ab47867 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -24,6 +24,7 @@
 public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButtonUi> {
 
     private AudioManager mAudioManager;
+    private EndCallListener mEndCallListener;
 
     public void init(AudioManager audioManager) {
         mAudioManager = audioManager;
@@ -37,12 +38,21 @@
     }
 
     public void show() {
-        getUi().setVisible();
+        getUi().setVisible(true);
     }
 
     public void endCallClicked() {
         // TODO(klp): hook up call id.
         CallCommandClient.getInstance().disconnectCall(1);
+
+        mEndCallListener.onCallEnd();
+        reset();
+    }
+
+    private void reset() {
+        getUi().setVisible(false);
+        getUi().setMute(false);
+        getUi().setSpeaker(false);
     }
 
     public void muteClicked(boolean checked) {
@@ -55,9 +65,17 @@
         getUi().setSpeaker(checked);
     }
 
+    public void setEndCallListener(EndCallListener endCallListener) {
+        mEndCallListener = endCallListener;
+    }
+
     public interface CallButtonUi extends Ui {
-        void setVisible();
+        void setVisible(boolean on);
         void setMute(boolean on);
         void setSpeaker(boolean on);
     }
+
+    public interface EndCallListener {
+        void onCallEnd();
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index c2e0b05..71e981b 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -30,7 +30,7 @@
 /**
  * Phone app "in call" screen.
  */
-public class InCallActivity extends Activity {
+public class InCallActivity extends Activity implements CallButtonPresenter.EndCallListener {
 
     private static final String TAG = InCallActivity.class.getSimpleName();
 
@@ -68,6 +68,7 @@
         final CallButtonFragment callButtonFragment = (CallButtonFragment) getFragmentManager()
                 .findFragmentById(R.id.callButtonFragment);
         mCallButtonPresenter = callButtonFragment.getPresenter();
+        mCallButtonPresenter.setEndCallListener(this);
 
         // TODO(klp): create once and reset when needed.
         final AnswerFragment answerFragment = new AnswerFragment();
@@ -216,4 +217,9 @@
             Log.d(TAG, msg);
         }
     }
+
+    @Override
+    public void onCallEnd() {
+        finish();
+    }
 }
