named all methods in IDataModel *Async because that's what they are. better error handling in connecting (now tries 3 times with timeout)
async methods implemented more async