diff --git a/src/call.cpp b/src/call.cpp
index c4c974394899f64e92b4c02f38cc3762022f20df..1ef09c03a13418d059ae8e6544738ad4b9ab4f4c 100644
--- a/src/call.cpp
+++ b/src/call.cpp
@@ -478,7 +478,6 @@ Call* Call::operator<<( Call::Action& c)
    return this;
 }
 
-
 Call* operator<<(Call* c, Call::Action action)
 {
    return (!c) ? nullptr : (*c) << action;
diff --git a/src/private/useractions.h b/src/private/useractions.h
index fe9a0b89f049b56722cb715d196ca34088a94886..46f81d683fb0892089b0d21f8518be2d57d7290c 100644
--- a/src/private/useractions.h
+++ b/src/private/useractions.h
@@ -37,29 +37,30 @@ bool record(const QList<Call*> calls);
 bool accept(const QList<Call*> calls)
 {
    bool ret = true;
+
+   //Add a new call if none is there
+   if (!calls.size()) {
+      Call* call = CallModel::instance()->dialingCall();
+      CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(call), QItemSelectionModel::ClearAndSelect);
+      return true;
+   }
+
    for (Call* call : calls) {
-      if(!call) {
-         qDebug() << "Calling when no item is selected. Opening an item.";
-         CallModel::instance()->dialingCall();
-         CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(call), QItemSelectionModel::ClearAndSelect);
+      const Call::State state = call->state();
+      //TODO port to lifeCycle code
+      if (state == Call::State::RINGING || state == Call::State::CURRENT || state == Call::State::HOLD
+         || state == Call::State::BUSY || state == Call::State::FAILURE || state == Call::State::ERROR) {
+         qDebug() << "Calling when item currently ringing, current, hold or busy. Opening an item.";
+         Call* c2 = CallModel::instance()->dialingCall();
+         CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(c2), QItemSelectionModel::ClearAndSelect);
       }
       else {
-         const Call::State state = call->state();
-         //TODO port to lifeCycle code
-         if (state == Call::State::RINGING || state == Call::State::CURRENT || state == Call::State::HOLD
-            || state == Call::State::BUSY || state == Call::State::FAILURE || state == Call::State::ERROR) {
-            qDebug() << "Calling when item currently ringing, current, hold or busy. Opening an item.";
-            Call* c2 = CallModel::instance()->dialingCall();
-            CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(c2), QItemSelectionModel::ClearAndSelect);
+         try {
+            call->performAction(Call::Action::ACCEPT);
          }
-         else {
-            try {
-               call->performAction(Call::Action::ACCEPT);
-            }
-            catch(const char * msg) {
+         catch(const char * msg) {
 //                KMessageBox::error(Ring::app(),i18n(msg));
-               ret = false;
-            }
+            ret = false;
          }
       }
    }
diff --git a/src/useractionmodel.cpp b/src/useractionmodel.cpp
index 2864e9321a77697742e41f9d67f2701d7a32ed1c..37e4b2fee13d7cd8f27f428f5fc2f5250913bf9a 100644
--- a/src/useractionmodel.cpp
+++ b/src/useractionmodel.cpp
@@ -479,7 +479,7 @@ bool UserActionModel::execute(const UserActionModel::Action action) const
             d_ptr->updateActions();
          break;
       case UserActionModel::Action::HANGUP          :
-         if (UserActions::accept(selected))
+         if (UserActions::hangup(selected))
             d_ptr->updateActions();
          break;
       case UserActionModel::Action::JOIN            :