Combine partioning by user with finding user's shortest.

This is a performance, memory usage, and maintainability improvement.