added some type specs and change top supervisor strategy to one_for_all