refactoring infinite scroll to not use a controller and minor performance improvements

Note tests on this commit will fail