diff --git a/CMakeLists.txt b/CMakeLists.txt
index 90ca0eb..7d3f3aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8)
+﻿cmake_minimum_required(VERSION 2.8)
 
 project(SwiftShader C CXX)
 
@@ -1653,8 +1653,6 @@
     ${SOURCE_DIR}/System/Math.hpp
     ${SOURCE_DIR}/System/Memory.cpp
     ${SOURCE_DIR}/System/Memory.hpp
-    ${SOURCE_DIR}/System/Resource.cpp
-    ${SOURCE_DIR}/System/Resource.hpp
     ${SOURCE_DIR}/System/Socket.cpp
     ${SOURCE_DIR}/System/Socket.hpp
     ${SOURCE_DIR}/System/Synchronization.hpp
diff --git a/src/Android.bp b/src/Android.bp
index edb927a..d9ff88d 100644
--- a/src/Android.bp
+++ b/src/Android.bp
@@ -652,7 +652,6 @@
         "System/Half.cpp",
         "System/Math.cpp",
         "System/Memory.cpp",
-        "System/Resource.cpp",
         "System/Socket.cpp",
         "System/Timer.cpp",
         "System/DebugAndroid.cpp",
diff --git a/src/Device/Renderer.cpp b/src/Device/Renderer.cpp
index 6ed66ff..5e41029 100644
--- a/src/Device/Renderer.cpp
+++ b/src/Device/Renderer.cpp
@@ -22,7 +22,6 @@
 #include "Pipeline/Constants.hpp"
 #include "System/CPUID.hpp"
 #include "System/Memory.hpp"
-#include "System/Resource.hpp"
 #include "System/Half.hpp"
 #include "System/Math.hpp"
 #include "System/Timer.hpp"
@@ -249,16 +248,12 @@
 
 		swiftConfig = new SwiftConfig(disableServer);
 		updateConfiguration(true);
-
-		sync = new Resource(0);
 	}
 
 	Renderer::~Renderer()
 	{
-		sync->lock(EXCLUSIVE);
-		sync->destruct();
+		sync.wait();
 		terminateThreads();
-		sync->unlock();
 
 		delete resumeApp;
 		resumeApp = nullptr;
@@ -318,7 +313,7 @@
 			return;
 		}
 
-		sync->lock(sw::PRIVATE);
+		sync.add();
 
 		if(update)
 		{
@@ -810,8 +805,7 @@
 
 	void Renderer::synchronize()
 	{
-		sync->lock(sw::PUBLIC);
-		sync->unlock();
+		sync.wait();
 	}
 
 	void Renderer::finishRendering(Task &pixelTask)
@@ -884,7 +878,7 @@
 					draw.events = nullptr;
 				}
 
-				sync->unlock();
+				sync.done();
 
 				draw.references = -1;
 				resumeApp->signal();
diff --git a/src/Device/Renderer.hpp b/src/Device/Renderer.hpp
index e8242e0..3f02609 100644
--- a/src/Device/Renderer.hpp
+++ b/src/Device/Renderer.hpp
@@ -300,7 +300,7 @@
 		SwiftConfig *swiftConfig;
 
 		std::list<vk::Query*> queries;
-		Resource *sync;
+		WaitGroup sync;
 
 		VertexProcessor::State vertexState;
 		SetupProcessor::State setupState;
diff --git a/src/System/BUILD.gn b/src/System/BUILD.gn
index d72bcab..7599617 100644
--- a/src/System/BUILD.gn
+++ b/src/System/BUILD.gn
@@ -28,8 +28,6 @@
     "Math.hpp",
     "Memory.cpp",
     "Memory.hpp",
-    "Resource.cpp",
-    "Resource.hpp",
     "Socket.cpp",
     "Socket.hpp",
     "Thread.hpp",
diff --git a/src/System/Resource.cpp b/src/System/Resource.cpp
deleted file mode 100644
index d0bd655..0000000
--- a/src/System/Resource.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "Resource.hpp"
-
-#include "Memory.hpp"
-#include "Debug.hpp"
-
-namespace sw
-{
-	Resource::Resource(size_t bytes) : size(bytes)
-	{
-		buffer = allocate(bytes);
-	}
-
-	Resource::~Resource()
-	{
-		deallocate(buffer);
-	}
-
-	void *Resource::lock(Accessor claimer)
-	{
-		std::unique_lock<std::mutex> lock(mutex);
-		return acquire(lock, claimer);
-	}
-
-	void *Resource::lock(Accessor relinquisher, Accessor claimer)
-	{
-		std::unique_lock<std::mutex> lock(mutex);
-
-		// Release
-		if (count > 0 && accessor == relinquisher)
-		{
-			release(lock);
-		}
-
-		// Acquire
-		acquire(lock, claimer);
-
-		return buffer;
-	}
-
-	void Resource::unlock()
-	{
-		std::unique_lock<std::mutex> lock(mutex);
-		release(lock);
-	}
-
-	void *Resource::acquire(std::unique_lock<std::mutex> &lock, Accessor claimer)
-	{
-		while (count > 0 && accessor != claimer)
-		{
-			blocked++;
-			released.wait(lock, [&] { return count == 0 || accessor == claimer; });
-			blocked--;
-		}
-
-		accessor = claimer;
-		count++;
-		return buffer;
-	}
-
-	void Resource::release(std::unique_lock<std::mutex> &lock)
-	{
-		ASSERT(count > 0);
-
-		count--;
-
-		if(count == 0)
-		{
-			if(orphaned)
-			{
-				lock.unlock();
-				delete this;
-				return;
-			}
-			released.notify_one();
-		}
-	}
-
-	void Resource::destruct()
-	{
-		std::unique_lock<std::mutex> lock(mutex);
-		if(count == 0 && blocked == 0)
-		{
-			lock.unlock();
-			delete this;
-			return;
-		}
-		orphaned = true;
-	}
-
-	const void *Resource::data() const
-	{
-		return buffer;
-	}
-}
diff --git a/src/System/Resource.hpp b/src/System/Resource.hpp
deleted file mode 100644
index bff79a1..0000000
--- a/src/System/Resource.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef sw_Resource_hpp
-#define sw_Resource_hpp
-
-#include <condition_variable>
-#include <mutex>
-
-namespace sw
-{
-	enum Accessor
-	{
-		PUBLIC,    // Application/API access
-		PRIVATE,   // Renderer access, shared by multiple threads if read-only
-		MANAGED,   // Renderer access, shared read/write access if partitioned
-		EXCLUSIVE
-	};
-
-	// Resource is a form of shared mutex that guards an internally allocated
-	// buffer. Resource has an exclusive lock mode (sw::Accessor) and lock
-	// count, defaulting to sw::Accessor::PUBLIC and 0, respectively.
-	// Resource doesn't treat any of the sw::Accessor enumerator lock modes
-	// differently, all semantic meaning comes from the usage of Resource.
-	// You can have multiple locks in mode sw::Accessor::EXCLUSIVE.
-	class Resource
-	{
-	public:
-		Resource(size_t bytes);
-
-		// destruct() is an asynchronous destructor, that will atomically:
-		//   When the resource is unlocked:
-		//     * Delete itself.
-		//   When the resource is locked:
-		//     * Flag itself for deletion when next fully unlocked.
-		void destruct();
-
-		// lock() will atomically:
-		//   When the resource is unlocked OR the lock mode equals claimer:
-		//     * Increment the lock count.
-		//     * Return a pointer to the buffer.
-		//   When the resource is locked AND the lock mode does not equal claimer:
-		//     * Block until all existing locks are released (lock count equals 0).
-		//     * Switch lock mode to claimer.
-		//     * Increment the lock count.
-		//     * Return a pointer to the buffer.
-		void *lock(Accessor claimer);
-
-		// lock() will atomically:
-		//   When the resource is unlocked OR the lock mode equals claimer:
-		//     * Increment the lock count.
-		//     * Return a pointer to the buffer.
-		//   When the resource is locked AND the lock mode equals relinquisher:
-		//     * Release *all* existing locks (regardless of prior count).
-		//     * Delete itself and return nullptr if Resource::destruct() had been called while locked.
-		//     * Switch lock mode to claimer.
-		//     * Increment the lock count to 1.
-		//     * Return a pointer to the buffer.
-		//   When the resource is locked AND the lock mode does not equal relinquisher:
-		//     * Block until all existing locks are released (lock count equals 0)
-		//     * Switch lock mode to claimer
-		//     * Increment the lock count to 1.
-		//     * Return a pointer to the buffer.
-		void *lock(Accessor relinquisher, Accessor claimer);
-
-		// unlock() will atomically:
-		// * Assert if there are no locks.
-		// * Release a single lock.
-		// * Delete itself if Resource::destruct() had been called while locked.
-		void unlock();
-
-		// data() will return the Resource's buffer pointer regardless of lock
-		// state.
-		const void *data() const;
-
-		// size is the size in bytes of the Resource's buffer.
-		const size_t size;
-
-	private:
-		void *acquire(std::unique_lock<std::mutex> &lock, Accessor claimer);
-		void release(std::unique_lock<std::mutex> &lock);
-
-		~Resource();   // Always call destruct() instead
-
-		std::mutex mutex;
-		std::condition_variable released;
-
-		Accessor accessor = PUBLIC; // guarded by mutex
-		int blocked = 0; // guarded by mutex
-		int count = 0; // guarded by mutex
-		bool orphaned = false; // guarded by mutex
-		void *buffer;
-	};
-}
-
-#endif   // sw_Resource_hpp
diff --git a/src/Vulkan/vulkan.vcxproj b/src/Vulkan/vulkan.vcxproj
index 5d5b8cc..e249529 100644
--- a/src/Vulkan/vulkan.vcxproj
+++ b/src/Vulkan/vulkan.vcxproj
@@ -178,7 +178,6 @@
     <ClCompile Include="..\System\Half.cpp" />
     <ClCompile Include="..\System\Math.cpp" />
     <ClCompile Include="..\System\Memory.cpp" />
-    <ClCompile Include="..\System\Resource.cpp" />
     <ClCompile Include="..\System\Socket.cpp" />
     <ClCompile Include="..\System\Timer.cpp" />
     <ClCompile Include="..\WSI\VkSurfaceKHR.cpp" />
@@ -274,7 +273,6 @@
     <ClInclude Include="..\System\Half.hpp" />
     <ClInclude Include="..\System\Math.hpp" />
     <ClInclude Include="..\System\Memory.hpp" />
-    <ClInclude Include="..\System\Resource.hpp" />
     <ClInclude Include="..\System\SharedLibrary.hpp" />
     <ClInclude Include="..\System\Socket.hpp" />
     <ClInclude Include="..\System\Synchronization.hpp" />
diff --git a/src/Vulkan/vulkan.vcxproj.filters b/src/Vulkan/vulkan.vcxproj.filters
index 30c24be..c25de97 100644
--- a/src/Vulkan/vulkan.vcxproj.filters
+++ b/src/Vulkan/vulkan.vcxproj.filters
@@ -150,9 +150,6 @@
     <ClCompile Include="..\System\Memory.cpp">
       <Filter>Source Files\System</Filter>
     </ClCompile>
-    <ClCompile Include="..\System\Resource.cpp">
-      <Filter>Source Files\System</Filter>
-    </ClCompile>
     <ClCompile Include="..\System\Socket.cpp">
       <Filter>Source Files\System</Filter>
     </ClCompile>
@@ -488,9 +485,6 @@
     <ClInclude Include="..\System\Memory.hpp">
       <Filter>Header Files\System</Filter>
     </ClInclude>
-    <ClInclude Include="..\System\Resource.hpp">
-      <Filter>Header Files\System</Filter>
-    </ClInclude>
     <ClInclude Include="..\System\SharedLibrary.hpp">
       <Filter>Header Files\System</Filter>
     </ClInclude>
