diff --git a/buildbot-conf/cordova-config.json.sample b/buildbot-conf/cordova-config.json.sample
index 1625bc8..358f774 100644
--- a/buildbot-conf/cordova-config.json.sample
+++ b/buildbot-conf/cordova-config.json.sample
@@ -27,9 +27,6 @@
         "keychainPassword": "",
         "keychainLocation": ""
     },
-    "wp8": {
-        "target": "emulator"
-    },
     "windows8": {
         "target": "emulator"
     },
diff --git a/buildbot-conf/cordova-repos.json b/buildbot-conf/cordova-repos.json
index 337551b..3346f0c 100644
--- a/buildbot-conf/cordova-repos.json
+++ b/buildbot-conf/cordova-repos.json
@@ -81,14 +81,6 @@
             "github": "https://github.com/apache/cordova-ios.git"
         }
     },
-    "cordova-wp8": {
-        "default_repository": "github",
-        "default_branch":     "master",
-        "repositories":       {
-            "asf":    "https://git-wip-us.apache.org/repos/asf/cordova-wp8.git",
-            "github": "https://github.com/apache/cordova-wp8.git"
-        }
-    },
     "cordova-windows": {
         "default_repository": "github",
         "default_branch":     "master",
diff --git a/buildbot-conf/cordova.conf b/buildbot-conf/cordova.conf
index b8b3962..21c0081 100644
--- a/buildbot-conf/cordova.conf
+++ b/buildbot-conf/cordova.conf
@@ -420,10 +420,8 @@
 
 cordova_run_android = makeRunSteps('android')
 cordova_run_ios     = makeRunSteps('ios')
-cordova_run_ws80    = makeRunSteps('windows', extra_args=['--winvers', 'store80'])
 cordova_run_ws81    = makeRunSteps('windows', extra_args=['--winvers', 'store'])
 cordova_run_wp81    = makeRunSteps('windows', extra_args=['--winvers', 'phone'])
-cordova_run_wp8     = makeRunSteps('wp8')
 # cordova_run_bbry    = makeRunSteps('blackberry10')
 
 c['builders'].extend([
@@ -431,11 +429,8 @@
     BuilderConfig(name='cordova-android-osx',      slavenames=OSX_SLAVES,     factory=cordova_run_android, category=CORDOVA_SUPPORTED_CATEGORY),
     BuilderConfig(name='cordova-android-win',      slavenames=WINDOWS_SLAVES, factory=cordova_run_android, category=CORDOVA_SUPPORTED_CATEGORY),
     BuilderConfig(name='cordova-ios',              slavenames=OSX_SLAVES,     factory=cordova_run_ios,     category=CORDOVA_SUPPORTED_CATEGORY),
-    BuilderConfig(name='cordova-windows-store8.0', slavenames=WINDOWS_SLAVES, factory=cordova_run_ws80,    category=CORDOVA_SUPPORTED_CATEGORY),
     BuilderConfig(name='cordova-windows-store8.1', slavenames=WINDOWS_SLAVES, factory=cordova_run_ws81,    category=CORDOVA_SUPPORTED_CATEGORY),
     BuilderConfig(name='cordova-windows-phone8.1', slavenames=WINDOWS_SLAVES, factory=cordova_run_wp81,    category=CORDOVA_SUPPORTED_CATEGORY),
-    BuilderConfig(name='cordova-wp8',              slavenames=WINDOWS_SLAVES, factory=cordova_run_wp8,     category=CORDOVA_SUPPORTED_CATEGORY),
-
     # BuilderConfig(name='cordova-blackberry-win',   slavenames=WINDOWS_SLAVES, factory=cordova_run_bbry,    category=CORDOVA_UNSUPPORTED_CATEGORY),
     # BuilderConfig(name='cordova-blackberry-osx',   slavenames=OSX_SLAVES,     factory=cordova_run_bbry,    category=CORDOVA_UNSUPPORTED_CATEGORY),
 ])
@@ -475,10 +470,8 @@
             'cordova-android-osx',
             'cordova-android-win',
             'cordova-ios',
-            'cordova-windows-store8.0',
             'cordova-windows-store8.1',
             'cordova-windows-phone8.1',
-            'cordova-wp8',
             # 'cordova-blackberry-win',
             # 'cordova-blackberry-osx',
         ],
@@ -505,10 +498,8 @@
             'cordova-android-osx',
             'cordova-android-win',
             'cordova-ios',
-            'cordova-windows-store8.0',
             'cordova-windows-store8.1',
             'cordova-windows-phone8.1',
-            'cordova-wp8',
             # 'cordova-blackberry-win',
             # 'cordova-blackberry-osx',
         ],
@@ -521,10 +512,8 @@
             'cordova-android-osx',
             'cordova-android-win',
             'cordova-ios',
-            'cordova-windows-store8.0',
             'cordova-windows-store8.1',
             'cordova-windows-phone8.1',
-            'cordova-wp8',
             # 'cordova-blackberry-win',
             # 'cordova-blackberry-osx',
         ],
diff --git a/lib/util.js b/lib/util.js
index 2f649ad..a636358 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -61,7 +61,6 @@
         BLACKBERRY: "blackberry10",
         IOS:        "ios",
         WINDOWS:    "windows",
-        WP8:        "wp8",
 
         DEFAULT_ENCODING: "utf-8",
         DEFAULT_LOG_TIME: 15,
diff --git a/medic/medic-kill.js b/medic/medic-kill.js
index 4a2b843..72b957f 100644
--- a/medic/medic-kill.js
+++ b/medic/medic-kill.js
@@ -33,8 +33,6 @@
     switch (platformName) {
         case util.WINDOWS:
             return ["WWAHost.exe", "Xde.exe"];
-        case util.WP8:
-            return ["Xde.exe"];
         case util.IOS:
             return ["iOS Simulator"];
         case util.ANDROID:
diff --git a/medic/medic-log.js b/medic/medic-log.js
index 8432697..a25c5b2 100644
--- a/medic/medic-log.js
+++ b/medic/medic-log.js
@@ -153,10 +153,6 @@
     }
 }
 
-function logWP8() {
-    return;
-}
-
 function getLocalCLI() {
     if (util.isWindows()) {
         return "cordova.bat";
@@ -199,9 +195,6 @@
         case util.WINDOWS:
             logWindows(timeout);
             break;
-        case util.WP8:
-            logWP8();
-            break;
         default:
             console.warn("Logging is unsupported for " + platform);
             break;
diff --git a/medic/medic-run.js b/medic/medic-run.js
index 504935d..fac13b2 100644
--- a/medic/medic-run.js
+++ b/medic/medic-run.js
@@ -246,34 +246,6 @@
     return extraArgs;
 }
 
-function wp8SpecificPreparation(argv) {
-
-    var appPath = argv.app;
-
-    // set permanent guid to prevent multiple installations
-    var guid         = "{8449DEEE-16EB-4A4A-AFCC-8446E8F06FF7}";
-    var manifestPath = path.join(appPath, "platforms", "wp8", "Properties", "WMAppManifest.xml");
-    var xml          = fs.readFileSync(manifestPath).toString().split("\n");
-
-    for (var i in xml) if (xml[i].indexOf("<App") != -1) {
-        if (xml[i].toLowerCase().indexOf("productid") != -1) {
-            var index = xml[i].toLowerCase().indexOf("productid");
-            var spaceIndex = xml[i].indexOf(" ", index);
-            var stringAsArray = xml[i].split("");
-            stringAsArray.splice(index, spaceIndex - index);
-            xml[i] = stringAsArray.join("");
-        }
-        xml[i] = xml[i].substr(0, xml[i].length - 1);
-        xml[i] += " ProductID=\"" + guid + "\">";
-        break;
-    }
-
-    fs.writeFileSync(manifestPath, xml.join("\n"));
-
-    var extraArgs = "";
-    return extraArgs;
-}
-
 function getLocalCLI() {
     if (util.isWindows()) {
         return "cordova.bat";
@@ -363,8 +335,6 @@
             platformArgs = androidSpecificPreparation(argv);
         } else if (platform === util.WINDOWS) {
             platformArgs = windowsSpecificPreparation(argv);
-        } else if (platform === util.WP8) {
-            platformArgs = wp8SpecificPreparation(argv);
         }
 
         // start waiting for test results
