second version - análise SOLID  (testes)