Implementacao e testes