Before split into separate source files
Split into separate sources for more OO-style approach