refactored CollabFilter.py so that its significantly more readable, still needs additional docing