add pull refresh and load more function