separated application-specific code from reusable library classes,
tried to make things more modular/extensible