function train(examples):

   model = initialize_model()
   for epoch in range(num_epochs):
      for features, label in examples:
        prediction = model.predict(features)
        model.update(features, label, prediction) # adjust from mistakes
   return model


 function infer(model, new_features):
   return model.predict(new_features) # no further learning happens here
