diff --git a/app/src/Bluetooth/BluetoothDevices.java b/app/src/Bluetooth/BluetoothDevices.java
deleted file mode 100644
index 25e7500391d489a097f9771101cfe6a139ee1648..0000000000000000000000000000000000000000
--- a/app/src/Bluetooth/BluetoothDevices.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package Bluetooth;
-
-import java.io.IOException;
-import javax.bluetooth.BluetoothStateException;
-import javax.bluetooth.DiscoveryAgent;
-import javax.bluetooth.LocalDevice;
-import javax.bluetooth.RemoteDevice;
-
-/**
- *
- * @author invite
- */
-public class BluetoothDevices {
-    
-    
-    public BluetoothDevices() throws BluetoothStateException, IOException{
-       LocalDevice device = LocalDevice.getLocalDevice();
-		
-		RemoteDevice[] remotedevice = device.getDiscoveryAgent().retrieveDevices(DiscoveryAgent.PREKNOWN);
-		
-		for(RemoteDevice d : remotedevice)
-		{
-			System.out.println("Device Name : "+d.getFriendlyName(false));
-			System.out.println("Bluetooth Address : "+d.getBluetoothAddress()+"\n");
-		}
-    }
-    
-    
-}
-
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java
index cf567cf37fb6b52284750881469b839d9c6d3547..a37e82cb5ddeb7c0ca968e1ad5a2b7758d3afcdb 100644
--- a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java
@@ -1,4 +1,4 @@
-package edu.kufpg.bluetooth.server;
+package BluetoothJavaServer.src.edu.kufpg.bluetooth.server;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java
index 560e813692cb83561c02fe19d184ab734731e3d9..89181cac5858aa52025152269fa292dd40f92a4e 100644
--- a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java
@@ -1,4 +1,4 @@
-package edu.kufpg.bluetooth.server;
+package BluetoothJavaServer.src.edu.kufpg.bluetooth.server;
 
 public enum BluetoothServiceUuids {
 	SDP(0x0001),
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java
index 4b8e57fe82733e29ea3bff44f2ffb9c356417048..cc8c2e771a08d9e9ad387773341c1b15c384dd59 100644
--- a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java
@@ -1,4 +1,4 @@
-package edu.kufpg.bluetooth.server;
+package BluetoothJavaServer.src.edu.kufpg.bluetooth.server;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -6,11 +6,11 @@ import java.nio.charset.StandardCharsets;
 
 import sun.misc.IOUtils;
 
-class BluetoothStreamParseThread extends Thread {
+public class BluetoothThread extends Thread {
 	private BluetoothConnection connection;
 	private boolean keepGoing = true;
 	
-	public BluetoothStreamParseThread(BluetoothConnection connection) {
+	public BluetoothThread(BluetoothConnection connection) {
 		this.connection = connection;
 	}
 	
@@ -41,7 +41,7 @@ class BluetoothStreamParseThread extends Thread {
 				
 				connection.getOutputStream().write("SOUND".getBytes());
 
-			} catch (IOException e) {
+			} catch (Exception e) {
 				System.out.println("Could not read stream" + e);
 			}
 		}
@@ -64,7 +64,7 @@ class BluetoothStreamParseThread extends Thread {
 			if(null != connection.getOutputStream()) {
 				try {
 					connection.getOutputStream().flush();
-				} catch(IOException e) { e.printStackTrace(); }
+				} catch(Exception e) { e.printStackTrace(); }
 				connection.getOutputStream().close();
 			}
 		}
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/MyDiscoveryListener.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/MyDiscoveryListener.java
deleted file mode 100644
index 9c671c6ed3b10780639712140f936682fe7a1cab..0000000000000000000000000000000000000000
--- a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/MyDiscoveryListener.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package edu.kufpg.bluetooth.server;
-
-import java.io.BufferedReader;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.bluetooth.DataElement;
-import javax.bluetooth.DeviceClass;
-import javax.bluetooth.DiscoveryAgent;
-import javax.bluetooth.DiscoveryListener;
-import javax.bluetooth.LocalDevice;
-import javax.bluetooth.RemoteDevice;
-import javax.bluetooth.ServiceRecord;
-import javax.bluetooth.UUID;
-import javax.microedition.io.Connector;
-import javax.microedition.io.StreamConnection;
-import javax.obex.ClientSession;
-import javax.obex.HeaderSet;
-import javax.obex.Operation;
-import javax.obex.ResponseCodes;
-
-
-public class MyDiscoveryListener implements DiscoveryListener{
-    
-    private static Object lock=new Object();
-    public ArrayList<RemoteDevice> devices;
-    
-    public MyDiscoveryListener() {
-        devices = new ArrayList<RemoteDevice>();
-    }
-    
-
-
-    @Override
-    public void deviceDiscovered(RemoteDevice btDevice, DeviceClass arg1) {
-        String name;
-        try {
-            name = btDevice.getFriendlyName(false);
-        } catch (Exception e) {
-            name = btDevice.getBluetoothAddress();
-        }
-        
-        devices.add(btDevice);
-        System.out.println("device found: " + name);
-        
-    }
-
-    @Override
-    public void inquiryCompleted(int arg0) {
-        synchronized(lock){
-            lock.notify();
-        }
-    }
-
-   
-    @Override
-    public void serviceSearchCompleted(int arg0, int arg1) {
-        synchronized (lock) {
-            lock.notify();
-        }
-    }
-
-    @Override
-    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
-    	System.out.println("hey ! " + servRecord);
-    	for(ServiceRecord s : servRecord) {
-    		System.out.println("-------"+ s + "-------");
-    	}
-    	serviceRecords.addAll(Arrays.asList(servRecord));
-       // for (int i = 0; i < servRecord.length; i++) {
-          //  String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
-          //  if (url == null) {
-            //    continue;
-          //  }
-          
-          /*
-        int i=0;
-    	System.out.println("enter the device number \n");
-    	BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
-    	try {
-			String s = br.readLine();
-            i = Integer.parseInt(s);
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} 
-          
-          String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
-            DataElement serviceName = servRecord[i].getAttributeValue(0x0100);
-            if (serviceName != null) {
-                System.out.println("service " + serviceName.getValue() + " found " + url);
-                
-                //if(serviceName.getValue().equals("OBEX Object Push")){
-                   if(true){
-                    sendMessageToDevice(url);                
-                }
-            } else {
-                System.out.println("service found " + url);
-            }
-            */
-          
-       // }
-    }
-    
-    private static void sendMessageToDevice(String serverURL){
-    	// TO DO
-    }
-
-    static DiscoveryListener listener = new MyDiscoveryListener();
-    final static List<ServiceRecord> serviceRecords = new ArrayList<ServiceRecord>();
-    final static List<BluetoothConnection> connections = new ArrayList<BluetoothConnection>();
-    
-    /******************MAIN********************/
-    
-    public static void main(String[] args) {
-        
-        try{
-        	UUID serialPortUuid = new UUID(BluetoothServiceUuids.SERIAL_PORT.getHexValue());
-    		UUID[] desiredServiceUuids = new UUID[] { serialPortUuid };
-            LocalDevice localDevice = LocalDevice.getLocalDevice();
-            DiscoveryAgent agent = localDevice.getDiscoveryAgent();
-            RemoteDevice[] devices = agent.retrieveDevices(DiscoveryAgent.PREKNOWN);
-            for(RemoteDevice d : devices) {
-            	if(d.getBluetoothAddress().equals("201611073171")) {
-            		System.out.println("Thingz trouvé");
-            		synchronized(lock) {
-        				int result = agent.searchServices(null, desiredServiceUuids, d, listener);
-        				if( DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE == result) {
-        					System.out.println(" but it could not be reached");
-        					continue;
-        				}
-        				lock.wait();
-        				
-        				
-        				System.out.println("service records found");
-        				
-        				if(null != serviceRecords && serviceRecords.size() > 0) {
-        					System.out.println("YA DES SERVICES");
-        					for(ServiceRecord serviceRecord: serviceRecords) {
-        						String connectionUrl = serviceRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); // I have no idea what these args are
-        						StreamConnection connection;
-        						try {
-        							connection = (StreamConnection)Connector.open(connectionUrl);
-        							DataInputStream inputStream = new DataInputStream(connection.openDataInputStream());
-        							BluetoothConnection bluetoothConnection = new BluetoothConnection(d.getBluetoothAddress(), inputStream);
-        							bluetoothConnection.setOutputStream(new DataOutputStream(connection.openOutputStream()));
-        							connections.add(bluetoothConnection);
-        							System.out.println("Connected to " + d.getBluetoothAddress());
-        						} catch (IOException e) {
-        							System.out.println("Could not connect to " + d.getBluetoothAddress() + ": " + e.getMessage());
-        							e.printStackTrace();
-        						}
-        					}
-        				}
-        			}
-            	}
-            }
-            
-            if(connections.size() > 0) { // we are connected
-            	System.out.println("start");
-            	BluetoothStreamParseThread t = new BluetoothStreamParseThread(connections.get(0));
-            	t.start();
-            }
-          } catch (Exception e) {
-            e.printStackTrace();
-        }
-        
-        
-    }  
-    
-}
\ No newline at end of file
diff --git a/app/src/app/App.java b/app/src/app/App.java
index 19ab0be63c6a153752ae08c74c9ca88c9fb9fa4c..f297f85eb501fcf5dd3c6decfe9efa4a45a22b86 100644
--- a/app/src/app/App.java
+++ b/app/src/app/App.java
@@ -5,7 +5,7 @@
  */
 package app;
 
-import Bluetooth.BluetoothDevices;
+import BluetoothJavaServer.src.edu.kufpg.bluetooth.server.*;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
@@ -14,11 +14,43 @@ import javafx.stage.Stage;
 import Vue.*;
 import java.io.IOException;
 
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.bluetooth.DataElement;
+import javax.bluetooth.DeviceClass;
+import javax.bluetooth.DiscoveryAgent;
+import javax.bluetooth.DiscoveryListener;
+import javax.bluetooth.LocalDevice;
+import javax.bluetooth.RemoteDevice;
+import javax.bluetooth.ServiceRecord;
+import javax.bluetooth.UUID;
+import javax.microedition.io.Connector;
+import javax.microedition.io.StreamConnection;
+import javax.obex.ClientSession;
+import javax.obex.HeaderSet;
+import javax.obex.Operation;
+import javax.obex.ResponseCodes;
+
 /**
  *
  * @author invite
  */
-public class App extends Application {
+public class App extends Application implements DiscoveryListener {
+    
+    private static Object lock=new Object();
+    private static ArrayList<RemoteDevice> devices;
+    static DiscoveryListener listener = new App();
+    final static List<ServiceRecord> serviceRecords = new ArrayList<ServiceRecord>();
+    final static List<BluetoothConnection> connections = new ArrayList<BluetoothConnection>();
     
     @Override
     public void start(Stage stage) throws Exception{
@@ -34,7 +66,101 @@ public class App extends Application {
      * @param args the command line arguments
      */
     public static void main(String[] args) throws IOException {
+        devices = new ArrayList<RemoteDevice>();
+        try{
+        	UUID serialPortUuid = new UUID(BluetoothServiceUuids.SERIAL_PORT.getHexValue());
+    		UUID[] desiredServiceUuids = new UUID[] { serialPortUuid };
+            LocalDevice localDevice = LocalDevice.getLocalDevice();
+            DiscoveryAgent agent = localDevice.getDiscoveryAgent();
+            RemoteDevice[] devices = agent.retrieveDevices(DiscoveryAgent.PREKNOWN);
+            for(RemoteDevice d : devices) {
+            	if(d.getBluetoothAddress().equals("201611073171")) {
+            		System.out.println("Thingz trouve");
+            		synchronized(lock) {
+        				int result = agent.searchServices(null, desiredServiceUuids, d, listener);
+        				if( DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE == result) {
+        					System.out.println(" but it could not be reached");
+        					continue;
+        				}
+        				lock.wait();
+        				
+        				
+        				System.out.println("service records found");
+        				
+        				if(null != serviceRecords && serviceRecords.size() > 0) {
+        					System.out.println("YA DES SERVICES");
+        					for(ServiceRecord serviceRecord: serviceRecords) {
+        						String connectionUrl = serviceRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); // I have no idea what these args are
+        						StreamConnection connection;
+        						try {
+        							connection = (StreamConnection)Connector.open(connectionUrl);
+        							DataInputStream inputStream = new DataInputStream(connection.openDataInputStream());
+        							BluetoothConnection bluetoothConnection = new BluetoothConnection(d.getBluetoothAddress(), inputStream);
+        							bluetoothConnection.setOutputStream(new DataOutputStream(connection.openOutputStream()));
+        							connections.add(bluetoothConnection);
+        							System.out.println("Connected to " + d.getBluetoothAddress());
+        						} catch (IOException e) {
+        							System.out.println("Could not connect to " + d.getBluetoothAddress() + ": " + e.getMessage());
+        							e.printStackTrace();
+        						}
+        					}
+        				}
+        			}
+            	}
+            }
+            
+            if(connections.size() > 0) { // we are connected
+            	System.out.println("start");
+            	BluetoothThread t = new BluetoothThread(connections.get(0));
+            	t.start();
+            }
+          } catch (Exception e) {
+            e.printStackTrace();
+        }
+        
         launch(args);
+        
+    }
+
+    
+
+
+    @Override
+    public void deviceDiscovered(RemoteDevice btDevice, DeviceClass arg1) {
+        String name;
+        try {
+            name = btDevice.getFriendlyName(false);
+        } catch (Exception e) {
+            name = btDevice.getBluetoothAddress();
+        }
+        
+        devices.add(btDevice);
+        System.out.println("device found: " + name);
+        
+    }
+
+    @Override
+    public void inquiryCompleted(int arg0) {
+        synchronized(lock){
+            lock.notify();
+        }
+    }
+
+   
+    @Override
+    public void serviceSearchCompleted(int arg0, int arg1) {
+        synchronized (lock) {
+            lock.notify();
+        }
+    }
+
+    @Override
+    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
+    	System.out.println("hey ! " + servRecord);
+    	for(ServiceRecord s : servRecord) {
+    		System.out.println("-------"+ s + "-------");
+    	}
+    	serviceRecords.addAll(Arrays.asList(servRecord));
     }
     
 }