diff --git a/FakeNews/bin/.gitignore b/FakeNews/bin/.gitignore
index fd56ef212f1e5fc898978819e422c8521756aea3..6a85e2c16afb893d0358786b3b27ba03318cef1a 100644
--- a/FakeNews/bin/.gitignore
+++ b/FakeNews/bin/.gitignore
@@ -1 +1,2 @@
+/Docs/
 /br/
diff --git a/FakeNews/src/br/ufrn/imd/controle/ControladorArquivo.java b/FakeNews/src/br/ufrn/imd/controle/ControladorArquivo.java
index b09480d93fbdedd9908b8bfe9904f8efd08e6e26..6dc37f6f5899661d81ebb68abd5b9660a7cc840d 100644
--- a/FakeNews/src/br/ufrn/imd/controle/ControladorArquivo.java
+++ b/FakeNews/src/br/ufrn/imd/controle/ControladorArquivo.java
@@ -2,84 +2,37 @@ package br.ufrn.imd.controle;
 
 import java.io.FileNotFoundException;
 import java.lang.reflect.Array;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 
 import br.ufrn.imd.modelo.ArqCsv;
 import br.ufrn.imd.modelo.ArqWeb;
+import br.ufrn.imd.modelo.Noticia;
 
 public class ControladorArquivo {
 	
-	private ArqCsv csv;
-	private ArqWeb web;
-	ArrayList<String> listCsv;
-
-	
-	
-	public ControladorArquivo() throws FileNotFoundException {
-		this.csv = new ArqCsv();
-		this.listCsv = new ArrayList<String>();
-	}
+	private ArqCsv arqCsv;
+	private ArqWeb arqWeb;
+	private HashMap<String , Noticia> Map;
 	
-	public ArqCsv getCsv() {
-		return csv;
-	}
-
-	public void setCsv(ArqCsv csv) {
-		this.csv = csv;
-	}
-
-	public ArqWeb getWeb() {
-		return web;
-	}
-
-	public void setWeb(ArqWeb web) {
-		this.web = web;
-	}
-
-
-	public void dataCsv(String s) {
-		listCsv.add(s); 
-	}
-
-
-	public ArrayList<String> getListCsv() {
-		return listCsv;
-	}
-
-	public void setListCsv(ArrayList<String> listCsv) {
-		this.listCsv = listCsv;
-	}
-	
-	public String removePalavraMenor(String palavra, int tamanho) {
-		
-		String[] s = palavra.split(" ");
-		String out = "";
-		int count = 0;
+	public ControladorArquivo() throws arquivoException  {
+		Map = new HashMap<String, Noticia>();
+		arqWeb = new ArqWeb();
 		
-		System.out.println(" oust "+ s.length+ "couyt "+ count);
-		
-		while(s.length > count) {
-			
-			if(s[count].length() > tamanho) {
-				out += s[count];
-				out += " ";
-			}
-			System.out.println(" oust "+ s.length+ "couyt "+ count);
-			count++;
+		try {
+			arqCsv = new ArqCsv();
+		} catch (FileNotFoundException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
 		}
-		
-		return out;
-	}
 
-	public String palavraMinuscula( String palavra ) {
-		return palavra.toLowerCase().replaceAll("[^a-z ]", "");
-	}
-	
-	public void palavrasOrdenar() {		
-		Collections.sort(listCsv);
 	}
+
 	
 
 }
diff --git a/FakeNews/src/br/ufrn/imd/controle/ControladorProcesso.java b/FakeNews/src/br/ufrn/imd/controle/ControladorProcesso.java
new file mode 100644
index 0000000000000000000000000000000000000000..f803cc4d53b517084634d1ee8452186959cfb967
--- /dev/null
+++ b/FakeNews/src/br/ufrn/imd/controle/ControladorProcesso.java
@@ -0,0 +1,133 @@
+package br.ufrn.imd.controle;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class ControladorProcesso {
+	
+	
+	public static String removePalavraMenor(String palavra, int tamanho) {
+		
+		String[] s = palavra.split(" ");
+		String out = "";
+		int count = 0;
+		
+		while(s.length > count) {
+			
+			if(s[count].length() > tamanho) {
+				out += s[count];
+				out += " ";
+			}
+			
+			count++;
+		}
+		
+		return out;
+	}
+
+	public static String palavraMinuscula( String palavra ) {
+		return palavra.toLowerCase().replaceAll("[^a-z ]", "");
+	}
+	
+	public static String palavrasOrdenarRepitidas(String frase) {
+		
+		String[] s = frase.split(" ");
+		String aux = "";
+		String out = "";
+		int count = 0;
+		int index = 0;
+		int charAt = 0;
+		
+		while(s.length-1 > index) {
+
+			if(s[index].charAt(charAt) > s[count].charAt(charAt)) {
+
+				aux = s[index];
+				s[index] = s[count];
+				s[count] = aux;				
+			}
+			
+			if(s[index].charAt(charAt) == s[count].charAt(charAt)) {
+				if(s[index].length()-1 > charAt) {
+					charAt++;
+					continue;
+				}
+			}
+			
+			if(count == s.length-1 ) {
+				out += s[index];
+				out += " ";
+				index++;
+				count = index;
+				charAt = 0;
+			}
+			charAt = 0;
+			count++;
+		}
+		
+		
+		
+		return palavrasRepetidas(out);
+	}
+	
+	private static String palavrasRepetidas(String palavra) {
+		
+		String[] s = palavra.split(" ");
+		String out = "";
+		
+		int count = 0;
+		
+		while(s.length-1 > count) {
+			if(s[count].equals(s[count+1])) {
+				
+			}else{
+				out += s[count];
+				out += " ";
+			}
+			count++;
+		}
+		if(s[count-1].equals(s[count])) {
+			
+		}else{
+			out += s[count];
+			out += " ";
+		}
+		return out;
+	}
+	
+	//Fonte https://www.geeksforgeeks.org/sha-1-hash-in-java/
+	public static String SHA(String palavra) 
+    { 
+		String hashtext;
+        try { 
+            // getInstance() method is called with algorithm SHA-1 
+            MessageDigest md = MessageDigest.getInstance("SHA-1"); 
+  
+            // digest() method is called 
+            // to calculate message digest of the input string 
+            // returned as array of byte 
+            byte[] messageDigest = md.digest(palavra.getBytes()); 
+  
+            // Convert byte array into signum representation 
+            BigInteger no = new BigInteger(1, messageDigest); 
+  
+            // Convert message digest into hex value 
+            hashtext = no.toString(16); 
+  
+            // Add preceding 0s to make it 32 bit 
+            while (hashtext.length() < 32) { 
+                hashtext = "0" + hashtext; 
+            } 
+  
+            // return the HashText 
+            return hashtext; 
+        } 
+  
+        // For specifying wrong message digest algorithms 
+        catch (NoSuchAlgorithmException e) { 
+            throw new RuntimeException(e); 
+        } 
+    } 
+
+}
diff --git a/FakeNews/src/br/ufrn/imd/modelo/Noticia.java b/FakeNews/src/br/ufrn/imd/modelo/Noticia.java
index 0ee895f04da2f7dd2cffbdfdc3bcb1d53bda2a74..f06e35356d20635a82f137021eec282815aaa546 100644
--- a/FakeNews/src/br/ufrn/imd/modelo/Noticia.java
+++ b/FakeNews/src/br/ufrn/imd/modelo/Noticia.java
@@ -4,17 +4,11 @@ import java.sql.Timestamp;
 
 public class Noticia {
 	
-	private int id;
 	private String conteudo = "";
+	private String formatado = "";
 	private String link = "";
 	private Timestamp time;
-	
-	public int getId() {
-		return id;
-	}
-	public void setId(int id) {
-		this.id = id;
-	}
+
 	public String getConteudo() {
 		return conteudo;
 	}
diff --git a/FakeNews/src/br/ufrn/imd/visao/Principal.java b/FakeNews/src/br/ufrn/imd/visao/Principal.java
index bde1091cb59e1acaf629646f99a6d5b513b6380c..70a62d52b564e6d88b2c2b06bba73e43ddcb2c5a 100644
--- a/FakeNews/src/br/ufrn/imd/visao/Principal.java
+++ b/FakeNews/src/br/ufrn/imd/visao/Principal.java
@@ -3,26 +3,13 @@ package br.ufrn.imd.visao;
 import java.io.IOException;
 import br.ufrn.imd.controle.ControladorArquivo;
 import br.ufrn.imd.modelo.ArqCsv;
+import br.ufrn.imd.controle.ControladorProcesso;
 
 public class Principal {
 
 	public static void main(String[] args) throws IOException {
 	
-		ControladorArquivo ca = new ControladorArquivo();
-		
-		ca.getCsv().abrir();
-		ca.getCsv().ler(0);
-		
-		String palavra = ca.removePalavraMenor(ca.getCsv().ler(0), 3);
 
-		System.out.println(palavra);
-		
-		palavra = ca.palavraMinuscula(palavra);
-		ca.dataCsv(palavra);
-		ca.palavrasOrdenar();
-
-		System.out.println(ca.getListCsv());
-		
 		
 
 	}