organização das pastas: - app - 1: models (entidades para representar corrida, lap e piloto) - 2: services (regras de negócio) - 3: utils (pasta onde funções comuns podem ser chamadas, ex: paradas de calcular o tempo por exemplo é utilizada em um monte de lugar) 3: module Utils class TimeConverter def self.convert_lap_time(time) blabllba end end end class Lap extend Utils::TimeConverter def initialize(lap_number, lap_time, avg_spd) ... @time = convert_lap_time(lap_time) end end - models - race.rb - maluco, utilize enums ou então constantes para mudar esses entry[0], entry[1], entry[4], não saquei o que ta rolando ai :B, você poderia utilizar hashs como alternative também; - as variáveis precisam ser attr_accessor? vc não chega a definir algo diferente durante a execução; - - main.rb - abstraia os métodos read_file e write_result em alguma classe, acredito que não tenha problemas se forem métodos estáticos; - write_result (poderia só chamar o service não?)