diff --git a/Makefile b/Makefile
index c9d42653a6a8e4676c2fae504b918bae2b61dff1..f6c09837b350bcbd2100eb1ce4670d37a82cff45 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@ test: main
 	chmod +x runTests.sh; \
 	./runTests.sh
 
-main: main.c tabuleiro.o filha.o
+main: main.c tabuleiro.o filha.o no.o 
 	$(CC) $(CFLAGS) -o $@ $^
 
 clean:
diff --git a/filha.c b/filha.c
index 8cefe87f591c833a4527c0624fce4dcc6a66d2a8..841081d1646162662f6adda58d0c8edbf2f54ff2 100644
--- a/filha.c
+++ b/filha.c
@@ -1,11 +1,7 @@
-#include "filha.h"
 #include <stdbool.h>
 #include <stdlib.h>
-
-struct No {
-    void *conteudo;
-    No anterior, proximo;
-};
+#include "filha.h"
+#include "no.h"
 
 struct Filha {
     unsigned int tamanho;
@@ -24,58 +20,46 @@ unsigned int tamanhoFilha(Filha f) {
     return f->tamanho;
 }
 
-No primeiroNo(Filha f) {
+No primeiroNoFilha(Filha f) {
     if(f->tamanho == 0) {
         return NULL;
     }
     No n = f->primeiro;
-    f->primeiro = f->primeiro->proximo;
-    n->anterior = NULL;
-    n->proximo = NULL;
+    f->primeiro = getSucessorNo(f->primeiro);
+    setSucessorNo(n, NULL);
+    setAntecessorNo(n, NULL);
     return n;
 }
 
-No ultimoNo(Filha f) {
+No ultimoNoFilha(Filha f) {
     if(f->tamanho == 0) {
         return NULL;
     }
     No n = f->ultimo;
-    f->ultimo = f->ultimo->anterior;
-    n->anterior = NULL;
-    n->proximo = NULL;
+    f->ultimo = getAntecessorNo(f->ultimo);
+    setSucessorNo(n, NULL);
+    setAntecessorNo(n, NULL);
     return n;
 }
 
-No sucessorNo(No n) {
-    return n->proximo;
-}
-
-No antecessorNo(No n) {
-    return n->anterior;
-}
-
-void *conteudo(No n) {
-    return n->conteudo;
-}
-
-No insere(void *conteudo, Filha f) {
-    No novo = malloc(sizeof(struct No));
+No insereFilha(void *conteudo, Filha f) {
+    No novo = criaNo();
 
     if(!novo) return NULL;
 
-    novo->conteudo = conteudo;
-    novo->anterior = f->ultimo;
+    setConteudo(novo, conteudo);
+    setAntecessorNo(novo, f->ultimo);
     ++f->tamanho;
     return f->ultimo = novo;
 }
 
-bool destroi(Filha f, bool destroi(void *)) {
+bool destroiFilha(Filha f, bool destroi(void *)) {
     No n;
     bool ok=true;
 
-    while( (n = primeiroNo(f)) ) {
+    while( (n = primeiroNoFilha(f)) ) {
         if(destroi)
-            ok &= destroi(conteudo(n));
+            ok &= destroi(getConteudo(n));
         free(n);
     }
     free(f);
diff --git a/filha.h b/filha.h
index f011de42bfdf16acaefb481ec2e139e18f4421d1..b4831a5dcb22075290c508919dfac50b1d98d59e 100644
--- a/filha.h
+++ b/filha.h
@@ -1,6 +1,7 @@
 #ifndef _FILHA_
 #define _FILHA_
 #include <stdbool.h>
+#include "no.h"
 
 // Filha é uma estrutura que pode ser vista como Fila ou Pilha
 typedef struct Filha *Filha;
@@ -16,24 +17,15 @@ Filha constroiFilha();
 unsigned int tamanhoFilha(Filha f);
 
 // Remove o primeiro nó da filha f ou retorna NULL se f for vazia
-No primeiroNo(Filha f);
+No primeiroNoFilha(Filha f);
 
 // Remove o último nó da filha f ou retorna NULL se f for vazia
-No ultimoNo(Filha f);
-
-// Devolve o nó sucessor de n ou NULL se n é o último nó da filha
-No sucessorNo(No n);
-
-// Devolve o nó antecessor de n ou NULL se n é o primeiro nó da filha
-No antecessorNo(No n);
-
-// Devolve o conteúdo de n
-void *conteudo(No n);
+No ultimoNoFilha(Filha f);
 
 // Insere um novo nó no fim da Filha f
 //
 // Devolve o nó recém criado ou NULL em caso de falha
-No insere(void *conteudo, Filha f);
+No insereFilha(void *conteudo, Filha f);
 
 // Desaloca a filha f e todos os seus nós
 //
@@ -42,7 +34,7 @@ No insere(void *conteudo, Filha f);
 // para cada nó n da filha
 //
 // devolve true em caso de sucesso ou false em caso de falha
-bool destroi(Filha f, bool destroi(void *));
+bool destroiFilha(Filha f, bool destroi(void *));
 
 // Impreme todos os nós da filha f
 //
diff --git a/main.c b/main.c
index d06e60b1811f5ff5cc6be04debcc1606e4ab6eeb..84718e0cac595df21585541ea829ff204845f9b8 100644
--- a/main.c
+++ b/main.c
@@ -3,27 +3,27 @@
 #include <stdio.h>
 #include <time.h>
 #include "tabuleiro.h"
-#include "jogador.h"
+// #include "jogador.h"
 
 int main() {
     Tblr t = criaTblr();
-    // Aloca o tabuleiro em um único array em vez de um "array de arrays"   
+    // Aloca o tabuleiro em um único array em vez de um "array de arrays"
     if(!leTblr(t)) {
         puts("Erro na leitura do tabuleiro");
         return -1;
     }
     imprimeTblr(t);
 
-    // declara o grafo ponderado e seu primeiro nodo 
-    grafo = criaGrafo(t);
-    if(grafo == NULL)) {
-        puts("Erro na criacao do grafo");
-        return -1;
-    }
-    // faz o jogador jogar o jogo a partir do tabuleiro dado
-    // o retorno do jogador sera um vetor contendo os numeros referentes a menor jogada encontrada por ele
-    int *jogadas;
-    jogadas = Joga(grafo, t);
+    // // declara o grafo ponderado e seu primeiro nodo
+    // grafo = criaGrafo(t);
+    // if(grafo == NULL)) {
+    //     puts("Erro na criacao do grafo");
+    //     return -1;
+    // }
+    // // faz o jogador jogar o jogo a partir do tabuleiro dado
+    // // o retorno do jogador sera um vetor contendo os numeros referentes a menor jogada encontrada por ele
+    // int *jogadas;
+    // jogadas = Joga(grafo, t);
 
     return 0;
 }
diff --git a/no.c b/no.c
new file mode 100644
index 0000000000000000000000000000000000000000..b88cfce6e0a4b6e7d03fc8691f67014756a513b4
--- /dev/null
+++ b/no.c
@@ -0,0 +1,39 @@
+#include <stdlib.h>
+#include "no.h"
+
+struct No {
+    void *conteudo;
+    No anterior, proximo;
+};
+
+No criaNo() {
+    No n = malloc(sizeof(struct No));
+
+    n->anterior = NULL;
+    n->proximo = NULL;
+    return n;
+}
+
+No getSucessorNo(No n) {
+    return n->proximo;
+}
+
+void setSucessorNo(No n, No p) {
+    n->proximo = p;
+}
+
+No getAntecessorNo(No n) {
+    return n->anterior;
+}
+
+void setAntecessorNo(No n, No p) {
+    n->anterior = p;
+}
+
+void *getConteudo(No n) {
+    return n->conteudo;
+}
+
+void setConteudo(No n, void *conteudo) {
+    n->conteudo = conteudo;
+}
diff --git a/no.h b/no.h
new file mode 100644
index 0000000000000000000000000000000000000000..343bb78dec3a7a3b2d0289dd3c3c71808c69c83e
--- /dev/null
+++ b/no.h
@@ -0,0 +1,27 @@
+#ifndef _NO_
+#define _NO_
+
+// Nó cujo conteúdo é um void *
+typedef struct No *No;
+
+// Cria um nó vazio e devolve
+No criaNo();
+
+// Devolve o nó sucessor de n ou NULL se n é o último nó da filha
+No getSucessorNo(No n);
+
+// Define o nó sucessor de n
+void setSucessorNo(No n, No p);
+
+// Devolve o nó antecessor de n ou NULL se n é o primeiro nó da filha
+No getAntecessorNo(No n);
+
+// Define o nó antecessor de n
+void setAntecessorNo(No n, No p);
+
+// Devolve o conteúdo de n
+void *getConteudo(No n);
+
+void setConteudo(No n, void *conteudo);
+
+#endif