application classes are decoupled, and can be used independently