refatoração do código e correção de bug

Refatoração do código completo e remoção dos bugs #19, #23 e #25, #26,
#29, #31