diff --git a/TDD/biblioteca_test b/TDD/biblioteca_test
deleted file mode 100755
index 3a4c1c6d6330dca4ef5b9cc62c030c98b4500d76..0000000000000000000000000000000000000000
Binary files a/TDD/biblioteca_test and /dev/null differ
diff --git a/sources/ControladorObras.cpp b/sources/ControladorObras.cpp
index 1d17dbd488f71cbf424bb3c535a7cb2a0cd313a2..116e164b45d97b17ad8a31382c39eb1890ec6b9a 100644
--- a/sources/ControladorObras.cpp
+++ b/sources/ControladorObras.cpp
@@ -59,6 +59,7 @@ bool ControladorObras::solicitarEmprestimo(shared_ptr<DescricaoObra> descricao){
       });
 
   if (it_obra == this->obras.end()) {
+    cerr << "> Erro: Obra não encontrada!" << endl;
     return false;
   }
 
diff --git a/sources/ControladorUsuarios.cpp b/sources/ControladorUsuarios.cpp
index 04fd341a10845f26ed6fcc1c1eaf7e17a0d71b03..e2d92dd9f30c52dd0193b623a10df99cba203372 100644
--- a/sources/ControladorUsuarios.cpp
+++ b/sources/ControladorUsuarios.cpp
@@ -58,9 +58,6 @@ chrono::year_month_day ControladorUsuarios::registrarEmprestimo(string CPF, shar
   }
 
   chrono::year_month_day dataDevolucao = user_it->emprestar(descricao);
-  if (int(dataDevolucao.year()) == 0 && unsigned(dataDevolucao.month()) == 0 && unsigned(dataDevolucao.day()) == 0) {
-   cerr << "> Erro: Falha ao realizar um emprestimo" << endl;
-  }
 
   return dataDevolucao;
 }
diff --git a/sources/DescricaoObra.cpp b/sources/DescricaoObra.cpp
index ed32a486795bb4123ea47b7eae9cf3fa253fecf8..6fb43ed0fc2387d9c45193692fff1ca42913d218 100644
--- a/sources/DescricaoObra.cpp
+++ b/sources/DescricaoObra.cpp
@@ -1,8 +1,6 @@
 #include <iostream>
 
 #include "DescricaoObra.hpp"
-#include "Livro.hpp"
-#include "Periodico.hpp"
 
 using namespace std;
 
@@ -22,4 +20,4 @@ string DescricaoObra::getTitulo() const {
 
 int DescricaoObra::getAnoPublicacao() const {
   return this->anoPublicacao;
-}
\ No newline at end of file
+}
diff --git a/sources/Obra.cpp b/sources/Obra.cpp
index db17acc4ff35dd1cab5e1be5d35615727ae662d4..e6c47bcdfc1cf3d0488f369035ee47b3249c70e0 100644
--- a/sources/Obra.cpp
+++ b/sources/Obra.cpp
@@ -2,8 +2,6 @@
 
 #include "Obra.hpp"
 #include "DescricaoObra.hpp"
-#include "Livro.hpp"
-#include "Periodico.hpp"
 
 // Constructor
 Obra::Obra(shared_ptr<DescricaoObra> descricao)
@@ -22,6 +20,7 @@ bool Obra::emprestar(){
     return true;
   }
 
+  cerr << "> Erro: Não existem obras disponíveis!" << endl;
   return false;
 }
 
diff --git a/sources/Usuario.cpp b/sources/Usuario.cpp
index f790963754768a29c62fe5fbab6fd245adaebfe7..5a881efb7cb182c858a750beec0d70ab5bffcdaa 100644
--- a/sources/Usuario.cpp
+++ b/sources/Usuario.cpp
@@ -54,7 +54,7 @@ bool Usuario::devolver(shared_ptr<DescricaoObra> descricao){
     });
   
   if (emp_it == this->emprestimos->end()){
-    cerr << "Erro: Obra não encontrada nos emprestimos do Usuário!" << endl;
+    cerr << "> Erro: Obra não encontrada nos emprestimos do Usuário!" << endl;
     return false;
   }
 
diff --git a/sources/main.cpp b/sources/main.cpp
index 973e49d519ac14bb608a999af9ab092f8814e69b..906134d7b5f451953dd8869cd72b1d8a94ded881 100644
--- a/sources/main.cpp
+++ b/sources/main.cpp
@@ -74,12 +74,12 @@ int main(){
 
   // Cria Usuarios
   cout << "> Criando Usuarios" << endl;
-  ControladorUsuarios contUsuarios = bib.getContUsuarios();
+  ControladorUsuarios& contUsuarios = bib.getContUsuarios();
   contUsuarios.adicionarUsuario("Muriki", "12345", "Casa", "9999", "murikigy@gmail.com");
   contUsuarios.adicionarUsuario("Nico", "54321", "Apartamento", "8888", "nico@gmail.com");
 
   // Cria Obras
-  ControladorObras contObras = bib.getContObras();
+  ControladorObras& contObras = bib.getContObras();
 
   // Cria Periodicos
   cout << "> Criando Periodicos" << endl;
@@ -127,7 +127,7 @@ int main(){
           cout << "\nUsuario: " << userCPF << endl;
           cout << "Valor a pagar: " << valor << endl;
         } else if (valor == 0) { cout << "> Aviso: Usuario não possui multas" << endl; }
-        else { cout << "> Erro: Usuario não encontrado" << endl; }
+        else { cout << "> Erro: Usuario não encontrado!" << endl; }
         break;
 
       case PAYFEES:
@@ -139,20 +139,20 @@ int main(){
       case ADDWORK:
         cout << "Entre com o tipo da obra (periodico|livro): ";   cin >> tipoObra;  cin.ignore();
         if (tipoObra == "periodico") {
-          cout << "Entre com o titulo: ";         getline(cin, titulo);
-          cout << "Entre com o ano: ";            cin >> ano;
-          cout << "Entre com o volume: ";         cin >> volume;
-          cout << "Entre com o mês: ";            cin >> mes;
+          cout << "Entre com o titulo: ";                         getline(cin, titulo);
+          cout << "Entre com o ano: ";                            cin >> ano;
+          cout << "Entre com o volume: ";                         cin >> volume;
+          cout << "Entre com o mês: ";                            cin >> mes;
           contObras.adicionarObra(make_shared<Periodico>(titulo, ano, volume, mes));
           cout << "> Obra adicionada!" << endl;
         } else if (tipoObra == "livro") {
-          cout << "Entre com o titulo: ";         getline(cin, titulo);
-          cout << "Entre com o ano: ";            cin >> ano; cin.ignore();
-          cout << "Entre com o autor: ";          getline(cin, autor);
-          cout << "Entre com o editora: ";        getline(cin, editora);
+          cout << "Entre com o titulo: ";                         getline(cin, titulo);
+          cout << "Entre com o ano: ";                            cin >> ano; cin.ignore();
+          cout << "Entre com o autor: ";                          getline(cin, autor);
+          cout << "Entre com o editora: ";                        getline(cin, editora);
           contObras.adicionarObra(make_shared<Livro>(titulo, ano, autor, editora));
           cout << "> Obra adicionada!" << endl;
-        } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; }
+        } else { cout << "> Erro: Tipo não reconhecido! Ignorando operação" << endl; }
         break;
 
       case LISTWORKS: contObras.mostrarDetalhes();
@@ -166,53 +166,48 @@ int main(){
         } else if (tipoObra == "livro") {
           cout << "Método de busca (titulo|autor): ";
           cin >> tipoBusca;
-        } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; }
+        } else { cout << "> Erro: Tipo não reconhecido! Ignorando operação" << endl; }
         //contObras.pesquisarObra(DescricaoObra &descricao);
         break;
 
       case BORROWWORK:
-        cout << "Entre com o CPF do usuário: ";   cin >> userCPF;
+        cout << "Entre com o CPF do usuário: ";                   cin >> userCPF;
         cout << "Entre com o tipo da obra (periodico|livro): ";   cin >> tipoObra; cin.ignore();
         if (tipoObra == "periodico") {
-          cout << "Entre com o titulo: ";         getline(cin, titulo); 
-          cout << "Entre com o ano: ";            cin >> ano;           
-          cout << "Entre com o volume: ";         cin >> volume;        
-          cout << "Entre com o mês: ";            cin >> mes;           
-          chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(userCPF, make_shared<Periodico>(titulo, ano, volume, mes));
+          cout << "Entre com o titulo: ";                         getline(cin, titulo); 
+          chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(
+                  userCPF, make_shared<Periodico>(titulo, 0, 0, 0));
           if (int(devolucao.year()) == 0 && 
               unsigned(devolucao.month()) == 0 && 
               unsigned(devolucao.day()) == 0) {
-            cerr << "> Erro: Falha ao realizar um emprestimo" << endl;
-          }
+            cerr << "> Erro: Falha ao realizar um emprestimo!" << endl;
+          } else { cout << "> Emprestimo realizado com sucesso!" << endl; }
         } else if (tipoObra == "livro") {
-          cout << "Entre com o titulo: ";         getline(cin, titulo);     
-          cout << "Entre com o ano: ";            cin >> ano; cin.ignore();              
-          cout << "Entre com o autor: ";          getline(cin, autor);      
-          cout << "Entre com o editora: ";        getline(cin, editora);    
-          chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(userCPF, make_shared<Livro>(titulo, ano, autor, editora));
+          cout << "Entre com o titulo: ";                         getline(cin, titulo);     
+          chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(
+                  userCPF, make_shared<Livro>(titulo, 0, "dummy", "dummy"));
           if (int(devolucao.year()) == 0 && 
               unsigned(devolucao.month()) == 0 && 
               unsigned(devolucao.day()) == 0) {
-            cerr << "> Erro: Falha ao realizar um emprestimo" << endl;
-          }
-        } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; }
+            cerr << "> Erro: Falha ao realizar um emprestimo!" << endl;
+          } else { cout << "> Emprestimo realizado com sucesso!" << endl; }
+        } else { cout << "> Erro: Tipo não reconhecido! Ignorando operação" << endl; }
         break;
 
       case RETURNWORK:
+        cout << "Entre com o CPF do usuário: ";                   cin >> userCPF;
         cout << "Entre com o tipo da obra (periodico|livro): ";   cin >> tipoObra; cin.ignore();
         if (tipoObra == "periodico") {
-          cout << "Entre com o titulo: ";         getline(cin, titulo);  
-          cout << "Entre com o ano: ";            cin >> ano;            
-          cout << "Entre com o volume: ";         cin >> volume;         
-          cout << "Entre com o mês: ";            cin >> mes;            
-          //contObras.devolverEmprestimo(make_shared<Periodico>(titulo, ano, volume, mes));
+          cout << "Entre com o titulo: ";                         getline(cin, titulo);  
+          if (contUsuarios.retornarEmprestimo(userCPF, make_shared<Periodico>(titulo, 0, 0, 0)) < 0){
+            cout << "> Devolução realizada com sucesso!" << endl;
+          }
         } else if (tipoObra == "livro") {
-          cout << "Entre com o titulo: ";         getline(cin, titulo);  
-          cout << "Entre com o ano: ";            cin >> ano; cin.ignore();            
-          cout << "Entre com o autor: ";          getline(cin, autor);   
-          cout << "Entre com o editora: ";        getline(cin, editora); 
-          //contObras.devolverEmprestimo(make_shared<Livro>(titulo, ano, autor, editora));
-        } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; }
+          cout << "Entre com o titulo: ";                         getline(cin, titulo);  
+          if (contUsuarios.retornarEmprestimo(userCPF, make_shared<Livro>(titulo, 0, "dummy", "dummy")) < 0){
+            cout << "> Devolução realizada com sucesso!" << endl;
+          }
+        } else { cout << "> Erro: Tipo não reconhecido! Ignorando operação" << endl; }
         break;
 
       case FINISH:
@@ -228,3 +223,56 @@ int main(){
   return 0;
 }
 
+
+//      case BORROWWORK:
+//        cout << "Entre com o CPF do usuário: ";                   cin >> userCPF;
+//        cout << "Entre com o tipo da obra (periodico|livro): ";   cin >> tipoObra; cin.ignore();
+//        if (tipoObra == "periodico") {
+//          cout << "Entre com o titulo: ";                         getline(cin, titulo); 
+//          cout << "Entre com o ano: ";                            cin >> ano;           
+//          cout << "Entre com o volume: ";                         cin >> volume;        
+//          cout << "Entre com o mês: ";                            cin >> mes;           
+//          chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(
+//                  userCPF, make_shared<Periodico>(titulo, 0, 0, 0));
+//          if (int(devolucao.year()) == 0 && 
+//              unsigned(devolucao.month()) == 0 && 
+//              unsigned(devolucao.day()) == 0) {
+//            cerr << "> Erro: Falha ao realizar um emprestimo" << endl;
+//          } else { cout << "> Emprestimo realizado com sucesso!" << endl; }
+//        } else if (tipoObra == "livro") {
+//          cout << "Entre com o titulo: ";                         getline(cin, titulo);     
+//          cout << "Entre com o ano: ";                            cin >> ano; cin.ignore();              
+//          cout << "Entre com o autor: ";                          getline(cin, autor);      
+//          cout << "Entre com o editora: ";                        getline(cin, editora);    
+//          chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(
+//                  userCPF, make_shared<Livro>(titulo, 0, "dummy", "dummy"));
+//          if (int(devolucao.year()) == 0 && 
+//              unsigned(devolucao.month()) == 0 && 
+//              unsigned(devolucao.day()) == 0) {
+//            cerr << "> Erro: Falha ao realizar um emprestimo" << endl;
+//          } else { cout << "> Emprestimo realizado com sucesso!" << endl; }
+//        } else { cout << "> Erro: Tipo não reconhecido! Ignorando operação" << endl; }
+//        break;
+//
+//      case RETURNWORK:
+//        cout << "Entre com o CPF do usuário: ";                   cin >> userCPF;
+//        cout << "Entre com o tipo da obra (periodico|livro): ";   cin >> tipoObra; cin.ignore();
+//        if (tipoObra == "periodico") {
+//          cout << "Entre com o titulo: ";                         getline(cin, titulo);  
+//          cout << "Entre com o ano: ";                            cin >> ano;            
+//          cout << "Entre com o volume: ";                         cin >> volume;         
+//          cout << "Entre com o mês: ";                            cin >> mes;            
+//          if (contUsuarios.retornarEmprestimo(userCPF, make_shared<Periodico>(titulo, 0, 0, 0)) < 0){
+//            cout << "> Devolução realizada com sucesso!" << endl;
+//          }
+//        } else if (tipoObra == "livro") {
+//          cout << "Entre com o titulo: ";                         getline(cin, titulo);  
+//          cout << "Entre com o ano: ";                            cin >> ano; cin.ignore();            
+//          cout << "Entre com o autor: ";                          getline(cin, autor);   
+//          cout << "Entre com o editora: ";                        getline(cin, editora); 
+//          if (contUsuarios.retornarEmprestimo(userCPF, make_shared<Livro>(titulo, 0, "dummy", "dummy")) < 0){
+//            cout << "> Devolução realizada com sucesso!" << endl;
+//          }
+//        } else { cout << "> Erro: Tipo não reconhecido! Ignorando operação" << endl; }
+//        break;
+//