This method is asynchronous, should we add a callback?