asynchronous get data from server, observer pattern to update ui