diff --git a/classic/sass/src/view/common/rtc/RtcPanel.scss b/classic/sass/src/view/common/rtc/RtcPanel.scss
index 89989dc0..ded63531 100644
--- a/classic/sass/src/view/common/rtc/RtcPanel.scss
+++ b/classic/sass/src/view/common/rtc/RtcPanel.scss
@@ -68,7 +68,7 @@ $border-radius : 50%;
 
 .call-button {
     border-radius: 50%;
-    background-color: #16b603;
+    background-color: #66A648;
     color: white;
     border-width: 0;
     .icon-small {
@@ -95,11 +95,11 @@ $border-radius : 50%;
 
 .call-button-cancel,
 .call-button-close {
-    background-color: red;
+    background-color: #a65048;
 }
 
 .call-button-accept {
-    background-color: forestgreen;
+    background-color: #66A648;
 }
 
 .call-icon-cancel,
diff --git a/classic/src/view/common/rtc/RtcController.js b/classic/src/view/common/rtc/RtcController.js
index 8e7e869b..6ed26645 100644
--- a/classic/src/view/common/rtc/RtcController.js
+++ b/classic/src/view/common/rtc/RtcController.js
@@ -320,6 +320,7 @@ Ext.define('NgcpCsc.view.common.rtc.RtcController', {
 
     incomingCallPending: function(call) {
         console.log('incomingCallPending');
+        this.playRingSound();
         this.showCallPanel();
         this.hideAllCallStates();
         this.getIncomingCallState().show();
@@ -359,6 +360,7 @@ Ext.define('NgcpCsc.view.common.rtc.RtcController', {
         $ct = this;
         $vm = $ct.getViewModel();
         var localMediaStream = $vm.get('rtcEngineLocalMediaStream');
+        this.stopRingSound();
         this.hideAllCallStates();
         this.showCallPanel();
         this.getView().lookupReference('acceptedCallState').show();
@@ -390,6 +392,7 @@ Ext.define('NgcpCsc.view.common.rtc.RtcController', {
     },
 
     showAbortedState: function (by, reason) {
+        this.stopRingSound();
         this.hideAllCallStates();
         this.getCallAbortedState().show();
         this.showCallPanel();
@@ -406,6 +409,7 @@ Ext.define('NgcpCsc.view.common.rtc.RtcController', {
     },
 
     hideAbortedState: function () {
+        this.stopRingSound();
         if(this.hasCall() && this.getCall().origin === 'local') {
             this.showComposer();
         } else {
@@ -504,5 +508,13 @@ Ext.define('NgcpCsc.view.common.rtc.RtcController', {
             document.getElementById('accepted-remote-media').muted = false;
             this.getView().lookupReference('callToggleRemoteAudio').removeCls('call-button-disabled');
         }
+    },
+
+    showPhoneComposer: function() {
+        if(this.getViewModel().get('phoneKeyboardHidden')) {
+            this.getViewModel().set('phoneKeyboardHidden', false);
+        } else {
+            this.getViewModel().set('phoneKeyboardHidden', true);
+        }
     }
 });
diff --git a/classic/src/view/common/rtc/composer/Phone.js b/classic/src/view/common/rtc/composer/Phone.js
index 7b853d06..bcbee2e7 100644
--- a/classic/src/view/common/rtc/composer/Phone.js
+++ b/classic/src/view/common/rtc/composer/Phone.js
@@ -24,6 +24,7 @@ Ext.define('NgcpCsc.view.common.rtc.composer.Phone', {
             handler: 'showPhoneComposer'
         }]
     }, {
+        reference: 'phoneKeys',
         xtype: 'phonekeys',
         bind: {
             hidden: '{phoneKeyboardHidden}'