Massive cleanup and refactoring, added ListUtil