versão está funcional mais precisa de interface
codigo funcional mas sem interface