Separated API access layer

Created a generic pattern for API access using C# 5.0-style asynchronous
calls (async/await)