Implemented promises, added more for loading.