bunch of stuff. 1: separating classes into different files, 2. initial testing system commit, test works, 3. adding statistics collector