Why has almost every class used the final keyword? This makes it impossible to extend any functionality or to write effective tests.