diff --git a/.gitignore b/.gitignore
index d3423ee..33dbe44 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,3 @@
-demo
-demo.app
-ios-deploy
-ios-deploy.dSYM
+build/*
 /.DS_Store
 *~
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 26974ee..0000000
--- a/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-IOS_SDK_VERSION = 8.3
-
-IOS_CC = gcc -ObjC
-DEVICE_SUPPORT = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/DeviceSupport
-IOS_SDK = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK_VERSION).sdk
-
-all: clean ios-deploy demo.app
-
-demo.app: demo Info.plist
-	mkdir -p demo.app
-	cp demo demo.app/
-	cp Info.plist ResourceRules.plist demo.app/
-	codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app
-
-demo: demo.c
-	$(IOS_CC) -g -arch armv7 -isysroot $(IOS_SDK) -framework CoreFoundation -o demo demo.c
-
-ios-deploy: clean ios-deploy.c
-	$(IOS_CC) -g -o ios-deploy -framework Foundation -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks ios-deploy.c
-
-symlink: 
-	cd $(DEVICE_SUPPORT); ln -sfn "`find . -type d -maxdepth 1 -exec basename {} \; | tail -1`" Latest	
-    
-install: symlink ios-deploy
-	mkdir -p $(prefix)/bin
-	cp ios-deploy $(prefix)/bin
-
-uninstall:
-	rm $(prefix)/bin/ios-deploy
-
-debug: all
-	./ios-deploy --debug --bundle demo.app
-
-clean:
-	@rm -rf *.app demo ios-deploy
diff --git a/demo/.gitignore b/demo/.gitignore
new file mode 100644
index 0000000..c2ef55d
--- /dev/null
+++ b/demo/.gitignore
@@ -0,0 +1,5 @@
+demo
+demo.app
+demo.dSYM
+/.DS_Store
+*~
diff --git a/Entitlements.plist b/demo/Entitlements.plist
similarity index 100%
rename from Entitlements.plist
rename to demo/Entitlements.plist
diff --git a/Info.plist b/demo/Info.plist
similarity index 100%
rename from Info.plist
rename to demo/Info.plist
diff --git a/demo/Makefile b/demo/Makefile
new file mode 100644
index 0000000..cf7c36a
--- /dev/null
+++ b/demo/Makefile
@@ -0,0 +1,24 @@
+IOS_SDK_VERSION = 9.0
+
+IOS_CC = gcc -ObjC
+IOS_SDK = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK_VERSION).sdk
+
+all: clean demo.app
+
+demo.app: demo Info.plist
+	mkdir -p demo.app
+	cp demo demo.app/
+	cp Info.plist ResourceRules.plist demo.app/
+	codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app
+
+demo: demo.c
+	$(IOS_CC) -g -arch armv7 -isysroot $(IOS_SDK) -framework CoreFoundation -o demo demo.c
+
+debug: all ios-deploy
+	@../build/Release/ios-deploy --debug --bundle demo.app
+
+clean:
+	@rm -rf *.app demo demo.dSYM
+	
+ios-deploy:
+	@xcodebuild -project ../ios-deploy.xcodeproj
diff --git a/ResourceRules.plist b/demo/ResourceRules.plist
similarity index 100%
rename from ResourceRules.plist
rename to demo/ResourceRules.plist
diff --git a/demo.c b/demo/demo.c
similarity index 98%
rename from demo.c
rename to demo/demo.c
index 583f43b..b366b14 100644
--- a/demo.c
+++ b/demo/demo.c
@@ -6,4 +6,4 @@
         printf("argv[%d] = %s\n", i, argv[i]);
     }
     return 0;
-}
+}
\ No newline at end of file
diff --git a/ios-deploy.xcodeproj/project.pbxproj b/ios-deploy.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..2b26eb1
--- /dev/null
+++ b/ios-deploy.xcodeproj/project.pbxproj
@@ -0,0 +1,275 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		7E70899C1B587DE4004D23AA /* ios-deploy.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E7089991B587DE4004D23AA /* ios-deploy.c */; settings = {COMPILER_FLAGS = "-x objective-c -fno-objc-arc"; }; };
+		7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899D1B587F29004D23AA /* CoreFoundation.framework */; };
+		7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899F1B58801E004D23AA /* Foundation.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		7E70898C1B587BF3004D23AA /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		7E70898E1B587BF3004D23AA /* ios-deploy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ios-deploy"; sourceTree = BUILT_PRODUCTS_DIR; };
+		7E7089991B587DE4004D23AA /* ios-deploy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ios-deploy.c"; path = "src/ios-deploy.c"; sourceTree = SOURCE_ROOT; };
+		7E70899A1B587DE4004D23AA /* errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = errors.h; path = src/errors.h; sourceTree = SOURCE_ROOT; };
+		7E70899B1B587DE4004D23AA /* MobileDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MobileDevice.h; path = src/MobileDevice.h; sourceTree = SOURCE_ROOT; };
+		7E70899D1B587F29004D23AA /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		7E70899F1B58801E004D23AA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		7E70898B1B587BF3004D23AA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */,
+				7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		7E7089851B587BF3004D23AA = {
+			isa = PBXGroup;
+			children = (
+				7E7089901B587BF3004D23AA /* ios-deploy */,
+				7E7089A21B588219004D23AA /* Frameworks */,
+				7E70898F1B587BF3004D23AA /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		7E70898F1B587BF3004D23AA /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				7E70898E1B587BF3004D23AA /* ios-deploy */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		7E7089901B587BF3004D23AA /* ios-deploy */ = {
+			isa = PBXGroup;
+			children = (
+				7E7089991B587DE4004D23AA /* ios-deploy.c */,
+				7E70899A1B587DE4004D23AA /* errors.h */,
+				7E70899B1B587DE4004D23AA /* MobileDevice.h */,
+			);
+			path = "ios-deploy";
+			sourceTree = "<group>";
+		};
+		7E7089A21B588219004D23AA /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				7E70899F1B58801E004D23AA /* Foundation.framework */,
+				7E70899D1B587F29004D23AA /* CoreFoundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		7E70898D1B587BF3004D23AA /* ios-deploy */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */;
+			buildPhases = (
+				7E70898A1B587BF3004D23AA /* Sources */,
+				7E70898B1B587BF3004D23AA /* Frameworks */,
+				7E70898C1B587BF3004D23AA /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "ios-deploy";
+			productName = "ios-deploy";
+			productReference = 7E70898E1B587BF3004D23AA /* ios-deploy */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		7E7089861B587BF3004D23AA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0710;
+				ORGANIZATIONNAME = PhoneGap;
+				TargetAttributes = {
+					7E70898D1B587BF3004D23AA = {
+						CreatedOnToolsVersion = 6.4;
+					};
+				};
+			};
+			buildConfigurationList = 7E7089891B587BF3004D23AA /* Build configuration list for PBXProject "ios-deploy" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 7E7089851B587BF3004D23AA;
+			productRefGroup = 7E70898F1B587BF3004D23AA /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				7E70898D1B587BF3004D23AA /* ios-deploy */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		7E70898A1B587BF3004D23AA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7E70899C1B587DE4004D23AA /* ios-deploy.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		7E7089931B587BF3004D23AA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.8;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_LDFLAGS = (
+					"-framework",
+					MobileDevice,
+					"-F/System/Library/PrivateFrameworks",
+				);
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		7E7089941B587BF3004D23AA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.8;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_LDFLAGS = (
+					"-framework",
+					MobileDevice,
+					"-F/System/Library/PrivateFrameworks",
+				);
+				SDKROOT = macosx;
+			};
+			name = Release;
+		};
+		7E7089961B587BF3004D23AA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		7E7089971B587BF3004D23AA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		7E7089891B587BF3004D23AA /* Build configuration list for PBXProject "ios-deploy" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7E7089931B587BF3004D23AA /* Debug */,
+				7E7089941B587BF3004D23AA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7E7089961B587BF3004D23AA /* Debug */,
+				7E7089971B587BF3004D23AA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 7E7089861B587BF3004D23AA /* Project object */;
+}
diff --git a/package.json b/package.json
index c279b07..cd4bdfb 100644
--- a/package.json
+++ b/package.json
@@ -7,9 +7,9 @@
   "description": "launch iOS apps iOS devices from the command line (Xcode 7)",
   "main": "ios-deploy",
   "scripts": {
-    "preinstall": "./check_reqs.js && make ios-deploy"
+    "preinstall": "./check_reqs.js && xcodebuild"
   },
-  "bin": "./ios-deploy",
+  "bin": "./build/Release/ios-deploy",
   "repository": {
     "type": "git",
     "url": "https://github.com/phonegap/ios-deploy"
diff --git a/resources/buildbox/build.sh b/resources/buildbox/build.sh
deleted file mode 100755
index aea6cbf..0000000
--- a/resources/buildbox/build.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-echo "$ make"
-make
\ No newline at end of file
diff --git a/MobileDevice.h b/src/MobileDevice.h
similarity index 100%
rename from MobileDevice.h
rename to src/MobileDevice.h
diff --git a/errors.h b/src/errors.h
similarity index 100%
rename from errors.h
rename to src/errors.h
diff --git a/ios-deploy.c b/src/ios-deploy.c
similarity index 98%
rename from ios-deploy.c
rename to src/ios-deploy.c
index f562079..a2cae06 100644
--- a/ios-deploy.c
+++ b/src/ios-deploy.c
@@ -169,7 +169,7 @@
 char *device_id = NULL;
 char *args = NULL;
 char *list_root = NULL;
-int timeout = 0;
+int _timeout = 0;
 int port = 0;	// 0 means "dynamically assigned"
 CFStringRef last_path = NULL;
 service_conn_t gdbfd;
@@ -326,7 +326,7 @@
 
 CFStringRef copy_xcode_path_for(CFStringRef subPath, CFStringRef search) {
     CFStringRef xcodeDevPath = copy_xcode_dev_path();
-    CFStringRef path;
+    CFStringRef path = NULL;
     bool found = false;
     const char* home = get_home();
     CFRange slashLocation;
@@ -864,7 +864,7 @@
 void
 server_callback (CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef address, const void *data, void *info)
 {
-    int res;
+    ssize_t res;
 
     if (CFDataGetLength (data) == 0) {
         // close the socket on which we've got end-of-file, the server_socket.
@@ -974,7 +974,7 @@
         return -1;
     }
 
-    kill_ptree_inner(root, signum, kp, len / sizeof(struct kinfo_proc));
+    kill_ptree_inner(root, signum, kp, (int)(len / sizeof(struct kinfo_proc)));
 
     free(kp);
     return 0;
@@ -1365,7 +1365,6 @@
     const void *keys[count];
     CFDictionaryGetKeysAndValues(result, keys, NULL);
     for(int i = 0; i < count; ++i) {
-        CFStringRef test = (CFStringRef)keys[i];
         NSLogOut(@"%@", (CFStringRef)keys[i]);
     }
     
@@ -1506,8 +1505,6 @@
 void make_directory(AMDeviceRef device) {
     service_conn_t houseFd = start_house_arrest_service(device);
 
-    afc_file_ref file_ref;
-
     afc_connection afc_conn;
     afc_connection* afc_conn_p = &afc_conn;
     AFCConnectionOpen(houseFd, 0, &afc_conn_p);
@@ -1519,8 +1516,6 @@
 void remove_path(AMDeviceRef device) {
     service_conn_t houseFd = start_house_arrest_service(device);
 
-    afc_file_ref file_ref;
-
     afc_connection afc_conn;
     afc_connection* afc_conn_p = &afc_conn;
     AFCConnectionOpen(houseFd, 0, &afc_conn_p);
@@ -1862,7 +1857,7 @@
             verbose = 1;
             break;
         case 't':
-            timeout = atoi(optarg);
+            _timeout = atoi(optarg);
             break;
         case 'u':
             unbuffered = 1;
@@ -1951,8 +1946,8 @@
         setbuf(stderr, NULL);
     }
 
-    if (detect_only && timeout == 0) {
-        timeout = 5;
+    if (detect_only && _timeout == 0) {
+        _timeout = 5;
     }
 
     if (app_path) {
@@ -1962,11 +1957,11 @@
     }
 
     AMDSetLogLevel(5); // otherwise syslog gets flooded with crap
-    if (timeout > 0)
+    if (_timeout > 0)
     {
-        CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + timeout, 0, 0, 0, timeout_callback, NULL);
+        CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + _timeout, 0, 0, 0, timeout_callback, NULL);
         CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes);
-        NSLogOut(@"[....] Waiting up to %d seconds for iOS device to be connected", timeout);
+        NSLogOut(@"[....] Waiting up to %d seconds for iOS device to be connected", _timeout);
     }
     else
     {
