added first pass at infinite scroll; needs a lot of perf work