TDD and separate files for classes
Merge branch 'master' into apply_oop