some refactoring, added loading spinners to refresh and load more events