diff --git a/README.md b/README.md
index 8e12abc..e890ed5 100644
--- a/README.md
+++ b/README.md
@@ -1,37 +1,104 @@
# BOL Interpreter
-## Como executar
+
-Execute o comando abaixo:
+## Descrição
+
+- Trabalho desenvolvido em grupo durante a disciplina de Linguagens e Paradigmas de Programação (curso de Ciência da Computação da Universidade Federal de Goiás - UFG)
+- O programa consiste em um interpretador da linguagem BOL (Bruno's Object-Oriented Language)
+- Linguagem utilizada para a implementação do interpretador: Lua 5.4
+
+---
+
+## Desenvolvedores
+
+- Luiz Fernando de Freitas Oliveira (luizfernandofo)
+- Pedro Augusto Serafim Belo (PedroASB)
+- Ryan Fernandes Auder Lopes (ryan-fauder)
+
+---
+## Como Executar
+
+Faça um clone do repositório em sua máquina e entre na pasta `src` do projeto:
+
+```bash
+git clone https://github.com/PedroASB/BOL-Interpreter.git && cd ./BOL-Interpreter/src/
```
- lua interpreter.lua program.bol
+
+Em seguida, execute o comando abaixo para executar um exemplo de código em BOL:
+
+```bash
+lua interpreter.lua ../examples/program1.bol
```
+Na pasta `examples`, estão disponíveis 4 (quatro) exemplos de códigos para teste. Para testá-los, substitua o arquivo na linha de comando.
-## Desenvolvedores
+---
-- Luiz Fernando de Freitas Oliveira
-- Pedro Augusto Serafim Belo
-- Ryan Fernandes Auder Lopes
+## Sobre a Linguagem BOL
-## Descrição
+### Funcionalidades
-- Trabalho desenvolvido em grupo durante a disciplina de Linguagens e Paradigmas de Programação (6º período do curso de Ciência da Computação)
-- O programa consiste em um interpretador da linguagem fictícia BOL (Bruno's Object-Oriented Language)
-- Linguagem utilizada para a implementação do interpretador: Lua 5.4
+O interpretador suporta as principais funcionalidades de uma linguagem, incluindo:
+- Declaração de variáveis
+- Operações matemáticas
+- Estruturas de controle de fluxo (if/else)
+- Definição de classes e métodos
+- Herança entre objetos
+- Instanciação de objetos com atributos
+- Impressão de variáveis e de classes
+- Meta-ação
-## Detalhes de Implementação
+### Retorno de métodos
-### Sobre o retorno de métodos
+Todo método por padrão tem o retorno de um valor númerico igual a 0.
-Todo método por padrão tem o retorno de um valor númerico igual a 0
+### Herança
-### Sobre a meta-ação
+Todo objeto possui um atributo especial chamado “_prototype”, que pode apontar para um outro objeto, mas não para o próprio objeto.
+
+Todo método possui um variável implícita chamada “self” que aponta para o objeto em que o
+método foi chamado.
+
+### Meta-ação
+
+A meta-ação é um expressão que realiza a sobrescrita na implementação do método de uma classe em tempo de execução.
A meta-ação somente tem efeito na função quando é realizada uma chamada nova sobre ela.
-### Sobre referências
+### Referências
Os objetos sempre são enviados na atribuição por referência.
-Os valores númericos são enviados por valor.
\ No newline at end of file
+Os valores númericos são enviados por valor.
+
+---
+## Estrutura do Interpretador
+
+Os principais módulos desenvolvidos para o interpretador:
+- **Reader:** Realiza a leitura das linhas no arquivo de entrada.
+- **Describer:** Descreve a estrutura das classes existentes em tabelas.
+- **Executor:** Gerencia a execução de um bloco de código.
+- **Env:** Armazena o ambiente de variáveis existentes no escopo de um bloco, como em métodos.
+- **Parser:** Cria a estrutura ```ast``` que descreve os elementos de uma linha de código.
+- **Eval:** Realiza a execução da estrutura ```ast``` gerada pela parser.
+
+Um diagrama foi construído na plataforma Whimsical para representar graficamente a estrutura do interpretador. Para acessá-lo, clique aqui.
+
+---
+
+## Testes
+
+Na pasta `tests`, estão presentes códigos criados para a realização de testes unitários sobre os principais módulos do interpretador.
+
+---
+
+## Contribuições
+
+Contribuições são sempre bem-vindas! Para contribuir com o projeto, basta criar uma nova branch, realizar as alterações desejadas e submeter um pull request.
+
+---
+
+## Licença
+
+Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.
\ No newline at end of file
diff --git a/src/describer-test.lua b/tests/describer-test.lua
similarity index 100%
rename from src/describer-test.lua
rename to tests/describer-test.lua
diff --git a/src/env-test.lua b/tests/env-test.lua
similarity index 100%
rename from src/env-test.lua
rename to tests/env-test.lua
diff --git a/src/eval-test.lua b/tests/eval-test.lua
similarity index 100%
rename from src/eval-test.lua
rename to tests/eval-test.lua
diff --git a/src/executor-test.lua b/tests/executor-test.lua
similarity index 100%
rename from src/executor-test.lua
rename to tests/executor-test.lua
diff --git a/src/parser-test.lua b/tests/parser-test.lua
similarity index 100%
rename from src/parser-test.lua
rename to tests/parser-test.lua
diff --git a/src/reader-test.lua b/tests/reader-test.lua
similarity index 100%
rename from src/reader-test.lua
rename to tests/reader-test.lua
diff --git a/src/tests.md b/tests/tests.md
similarity index 100%
rename from src/tests.md
rename to tests/tests.md
diff --git a/src/types-test.lua b/tests/types-test.lua
similarity index 100%
rename from src/types-test.lua
rename to tests/types-test.lua