Adding async support (base interfaces and classes for now).