Restructured Code and everything is Async.

API changed a bit