Remover duplicidade de código, centralizar exceções, utilizar melhor o `enum` de tipos.
Remover duplicidade de código, centralizar exceções, utilizar melhor o
enumde tipos.