diff --git a/wlauto/workloads/skype/__init__.py b/wlauto/workloads/skype/__init__.py
index f84c8ec8..15e50262 100755
--- a/wlauto/workloads/skype/__init__.py
+++ b/wlauto/workloads/skype/__init__.py
@@ -13,13 +13,22 @@
 # limitations under the License.
 #
 
-import time
 from wlauto import AndroidUxPerfWorkload, Parameter
 
 
 class Skype(AndroidUxPerfWorkload):
 
     name = 'skype'
+    package = 'com.skype.raider'
+    min_apk_version = '7.01.0.669'
+    activity = ''  # Skype has no default 'main' activity
+    view = [package + '/com.skype.android.app.calling.CallActivity',
+            package + '/com.skype.android.app.calling.PreCallActivity',
+            package + '/com.skype.android.app.chat.ChatActivity',
+            package + '/com.skype.android.app.main.HubActivity',
+            package + '/com.skype.android.app.main.SplashActivity',
+            package + '/com.skype.android.app.signin.SignInActivity',
+            package + '/com.skype.android.app.signin.UnifiedLandingPageActivity']
     description = '''
     A workload to perform standard productivity tasks within Skype. The
     workload logs in to the Skype application, selects a recipient from the
@@ -50,17 +59,7 @@ class Skype(AndroidUxPerfWorkload):
          please search online for specific instructions).
          https://support.skype.com/en/faq/FA3751/can-i-automatically-answer-all-my-calls-with-video-in-skype-for-windows-desktop
     '''
-    package = 'com.skype.raider'
-    min_apk_version = '7.01.0.669'
-    view = [package + '/com.skype.android.app.calling.CallActivity',
-            package + '/com.skype.android.app.calling.PreCallActivity',
-            package + '/com.skype.android.app.chat.ChatActivity',
-            package + '/com.skype.android.app.main.HubActivity',
-            package + '/com.skype.android.app.main.SplashActivity',
-            package + '/com.skype.android.app.signin.SignInActivity',
-            package + '/com.skype.android.app.signin.UnifiedLandingPageActivity']
-
-    activity = ''  # Skype has no default 'main' activity
+    
     launch_main = False  # overrides extended class
 
     parameters = [
@@ -70,7 +69,7 @@ class Skype(AndroidUxPerfWorkload):
                   '''),
         Parameter('login_pass', kind=str, mandatory=True,
                   description='Password associated with the account to log into the device'),
-        Parameter('contact_name', kind=str, mandatory=True, default='Echo / Sound Test Service',
+        Parameter('contact_name', kind=str, default='Echo / Sound Test Service',
                   description='This is the contact display name as it appears in the people list'),
         Parameter('duration', kind=int, default=10,
                   description='This is the duration of the call in seconds'),
diff --git a/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar b/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar
index ef1e7917..84275874 100644
Binary files a/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar and b/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar differ
diff --git a/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
index c845844d..1dd57b16 100755
--- a/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
+++ b/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -22,27 +22,32 @@ import com.android.uiautomator.core.UiObject;
 import com.android.uiautomator.core.UiObjectNotFoundException;
 import com.android.uiautomator.core.UiSelector;
 import com.android.uiautomator.core.UiWatcher;
+
 import com.arm.wlauto.uiauto.UxPerfUiAutomation;
 
+import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_ID;
+import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_TEXT;
+import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_DESC;
+
 import java.util.concurrent.TimeUnit;
 
 public class UiAutomation extends UxPerfUiAutomation {
 
-    public static final String ACTION_VOICE = "voice";
-    public static final String ACTION_VIDEO = "video";
-
     public Bundle parameters;
     public String packageName;
     public String packageID;
 
+    public static final String ACTION_VOICE = "voice";
+    public static final String ACTION_VIDEO = "video";
+
     public void runUiAutomation() throws Exception {
         // Override superclass value
         this.uiAutoTimeout = TimeUnit.SECONDS.toMillis(10);
 
-        // Get Params
         parameters = getParams();
         packageName = parameters.getString("package");
         packageID = packageName + ":id/";
+
         String loginName = parameters.getString("my_id");
         String loginPass = parameters.getString("my_pwd");
         String contactName = parameters.getString("name").replace("0space0", " ");
@@ -72,17 +77,17 @@ public class UiAutomation extends UxPerfUiAutomation {
     }
 
     public void handleLoginScreen(String username, String password) throws Exception {
-        String useridResoureId = packageID + "sign_in_userid";
-        String nextButtonResourceId = packageID + "sign_in_next_btn";
-        UiObject useridField = new UiObject(new UiSelector().resourceId(useridResoureId));
-        UiObject nextButton = new UiObject(new UiSelector().resourceId(nextButtonResourceId));
+        UiObject useridField =
+            new UiObject(new UiSelector().resourceId(packageID + "sign_in_userid"));
+        UiObject nextButton =
+            new UiObject(new UiSelector().resourceId(packageID + "sign_in_next_btn"));
         useridField.setText(username);
         nextButton.clickAndWaitForNewWindow();
 
-        String passwordResoureId = packageID + "signin_password";
-        String signinButtonResourceId = packageID + "sign_in_btn";
-        UiObject passwordField = new UiObject(new UiSelector().resourceId(passwordResoureId));
-        UiObject signinButton = new UiObject(new UiSelector().resourceId(signinButtonResourceId));
+        UiObject passwordField =
+            new UiObject(new UiSelector().resourceId(packageID + "signin_password"));
+        UiObject signinButton =
+            new UiObject(new UiSelector().resourceId(packageID + "sign_in_btn"));
         passwordField.setText(password);
         signinButton.clickAndWaitForNewWindow();
     }
@@ -90,55 +95,49 @@ public class UiAutomation extends UxPerfUiAutomation {
     public void dismissUpdatePopupIfPresent() throws Exception {
         UiObject updateNotice =
             new UiObject(new UiSelector().resourceId(packageID + "update_notice_dont_show_again"));
-
         //Detect if the update notice popup is present
         if (updateNotice.waitForExists(uiAutoTimeout)) {
             //Stop the notice from reappearing
             updateNotice.click();
-
-            UiObject contiuneButton = getUiObjectByText("Continue", "android.widget.Button");
-            if (contiuneButton.exists()) {
-                contiuneButton.click();
-            }
+            clickUiObject(BY_TEXT, "Continue", "android.widget.Button");
         }
     }
 
     public void searchForContact(String name) throws Exception {
-        UiObject menuSearch = new UiObject(new UiSelector().resourceId(packageID + "menu_search"));
         boolean sharingResource = false;
-
-        // If searching for a contact from Skype directly we need
-        // to click the menu search button to display the contact search box.
+        UiObject menuSearch =
+            new UiObject(new UiSelector().resourceId(packageID + "menu_search"));
         if (menuSearch.waitForExists(uiAutoTimeout)) {
+            // If searching for a contact from Skype directly we need
+            // to click the menu search button to display the contact search box.
             menuSearch.click();
-
-        // If sharing a resource from another app the contact search box is shown
-        // by default.
         } else {
+            // If sharing a resource from another app the contact search box is shown
+            // by default.
             sharingResource = true;
         }
 
         UiObject search = getUiObjectByText("Search", "android.widget.EditText");
         search.setText(name);
 
-        UiObject peopleItem = getUiObjectByText(name, "android.widget.TextView");
-
-        peopleItem.waitForExists(uiAutoTimeout);
-        peopleItem.click();
+        UiObject peopleItem = clickUiObject(BY_TEXT, name, "android.widget.TextView");
 
         UiObject avatarPresence =
             new UiObject(new UiSelector().resourceId(packageID + "skype_avatar_presence"));
 
+        UiObject confirm =
+            new UiObject(new UiSelector().resourceId(packageID + "fab"));
+
         // On some devices two clicks are needed to select a contact.
         if (!avatarPresence.waitUntilGone(uiAutoTimeout)) {
-            peopleItem.click();
+            if (!sharingResource || !confirm.exists()) {
+                peopleItem.click();
+            }
         }
 
         // Before sharing a resource from another app we first need to
         // confirm our selection.
         if (sharingResource) {
-            UiObject confirm =
-                new UiObject(new UiSelector().resourceId(packageID + "fab"));
             confirm.click();
         }
     }
@@ -158,15 +157,11 @@ public class UiAutomation extends UxPerfUiAutomation {
                         e.printStackTrace();
                     }
 
-                    Long viewTimeout = TimeUnit.SECONDS.toMillis(10);
-                    boolean dismissed = dismissButton.waitUntilGone(viewTimeout);
-
-                    return dismissed;
+                    return dismissButton.waitUntilGone(TimeUnit.SECONDS.toMillis(10));
                 }
                 return false;
             }
         };
-
         return infoPopUpWatcher;
     }
 
@@ -191,11 +186,14 @@ public class UiAutomation extends UxPerfUiAutomation {
     private void makeCall(int duration, boolean video, String testTag) throws Exception {
         String description = video ? "Video call" : "Call options";
 
-        UiObject callButton = new UiObject(new UiSelector().descriptionContains(description));
+        UiObject callButton =
+            new UiObject(new UiSelector().descriptionContains(description));
         callButton.clickAndWaitForNewWindow();
 
-        UiObject muteButton = new UiObject(new UiSelector().descriptionContains("Mute"));
+        UiObject muteButton =
+            new UiObject(new UiSelector().descriptionContains("Mute"));
         muteButton.click();
+        
         sleep(duration);
     }
 }