diff --git a/bbb-voice/src/main/java/local/media/JMediaReceiver.java b/bbb-voice/src/main/java/local/media/JMediaReceiver.java
deleted file mode 100644
index 18f586534ffab3c66edac7f78be6d990029be4ea..0000000000000000000000000000000000000000
--- a/bbb-voice/src/main/java/local/media/JMediaReceiver.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package local.media;
-
-
-import javax.media.*;
-import javax.media.format.*;
-import java.util.Vector;
-
-
-/** JMediaReceiver is a JMF-based media receiver.
-  */
-public class JMediaReceiver implements ControllerListener
-{
-   Player player=null;
-
-   JMediaReceiverListener ctr_listener=null;
-
-
-   /** Constructs a JMediaReceiver */
-   public JMediaReceiver(String media_type, int port, JMediaReceiverListener listener)
-   {
-      ctr_listener=listener;
-      try
-      {  String media_url="rtp://:"+port+"/"+media_type;
-         System.out.println("Receiver URL= "+media_url);
-         MediaLocator media_locator=new MediaLocator(media_url);
-         player=Manager.createPlayer(media_locator);
-         if (player==null) { System.out.println("Player cannot be created"); return; }
-         //else
-         
-         player.addControllerListener(this);         
-      }
-      catch(Exception e) { e.printStackTrace(); }
-   }
-  
-
-   /** Starts receiving the stream */
-   public String start()
-   {
-      String err=null;
-      try 
-      {  System.out.println("Trying to realize the player");
-         player.realize();
-         while(player.getState()!=player.Realized);
-         System.out.println("Player realized");
-         player.start();
-      }
-      catch (Exception e)
-      {  e.printStackTrace();
-         err="Failed trying to start the player";
-      }
-      return err;
-   }
-
-
-   /** Stops the receiver */
-   public String stop()
-   {
-      if (player!=null)
-      {  player.stop();
-         player.deallocate();
-         player.close();
-         System.out.println("Player stopped");
-         player=null;
-      }
-      return null;
-   }
-
-
-   public synchronized void controllerUpdate(ControllerEvent event)
-   {  if (ctr_listener!=null) ctr_listener.controllerUpdate(event);
-   }
-   
-   public java.awt.Component getVisualComponent()
-   {  return player.getVisualComponent();
-   }
-   
-   public java.awt.Component getControlPanelComponent()
-   {  return player.getControlPanelComponent();
-   }
-   
-   /*public Player getPlayer()
-   {  return player;
-   }*/
-   
-   
-  
-   // ******************************* MAIN *******************************
-
-   /** The main method. */
-   public static void main(String[] args)
-   {
-      if (args.length>=2)
-      try
-      {  int port=Integer.parseInt(args[1]);
-         JMediaReceiver media_receiver = new JMediaReceiver(args[0],port,null);
-         media_receiver.start();
-         return;
-      }
-      catch (Exception e) { System.out.println("Error creating the receiver"); }
-      
-      System.out.println("usage:\n  java JMediaReceiver audio|video <local_port>");
-   }
-
-}
-
-
diff --git a/bbb-voice/src/main/java/local/media/JMediaReceiverListener.java b/bbb-voice/src/main/java/local/media/JMediaReceiverListener.java
deleted file mode 100644
index 36436a70dd3c2d9c48c2dffc00d54991a6ad5fc5..0000000000000000000000000000000000000000
--- a/bbb-voice/src/main/java/local/media/JMediaReceiverListener.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package local.media;
-
-
-
-/** JMediaReceiverListener.
-  */
-public interface JMediaReceiverListener
-{   
-   public void controllerUpdate(javax.media.ControllerEvent event);  
-}
-
-
diff --git a/bbb-voice/src/main/java/local/media/JMediaSender.java b/bbb-voice/src/main/java/local/media/JMediaSender.java
deleted file mode 100644
index c6442961d54e138ede99da9f72c4358d9fb70a49..0000000000000000000000000000000000000000
--- a/bbb-voice/src/main/java/local/media/JMediaSender.java
+++ /dev/null
@@ -1,264 +0,0 @@
-package local.media;
-
-
-import java.io.*;
-
-import javax.media.*;
-import javax.media.format.*;
-import javax.media.protocol.*;
-import javax.media.control.TrackControl;
-
-import java.util.Vector;
-
-
-/** JMediaSender is a JMF-based media sender.
-  */
-public class JMediaSender
-{
-   Processor processor=null;
-   MediaLocator dest;
-   DataSink sink;
-
-
-   /** Constructs a JMediaSender */
-   public JMediaSender(String type, String media, String dest_addr, int dest_port)
-   {
-      String result;
-      
-      // #### 1) set the media-locator
-      MediaLocator media_locator;
-      //try
-      {  if (media==null)
-         {  if (type.equals("audio")) media_locator=getAudio();
-            else media_locator=getVideo();
-         }  
-         else media_locator=new MediaLocator(media);
-      }
-      //catch (Exception e) { e.printStackTrace(); }  
-      System.out.println("MediaLocator: "+media_locator.toString());
-      
-      // #### 2) create the processor
-      result=createProcessor(media_locator);
-      if (result!=null)
-      {  System.out.println(result);
-         //System.exit(0);
-         return;
-      }
-      //else       
-      System.out.println("Processor created");
-               
-      // #### 3) configure the processor
-      processor.configure();
-      while(processor.getState()<processor.Configured)
-      {  // wait..
-         //synchronized (getStateLock())
-         //{  try { getStateLock().wait(); } catch (InterruptedException ie) { return; }
-         //}
-      }
-      System.out.println("Processor configured");
-      
-      
-      // now do step (3a) or step (3b)
-
-      // I decided to do step 3a (only) in case of direct audio or video
-      if (media==null)
-      //if (false)
-      {
-      // #### 3a) set the output ContentDescriptor
-         processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW_RTP));
-         System.out.println("ContentDescriptor="+processor.getContentDescriptor().getContentType());
-      }
-      else
-      {         
-      // #### 3b.1) set the output ContentDescriptor
-         processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW));
-         System.out.println("ContentDescriptor="+processor.getContentDescriptor().getContentType());
-      
-      // #### 3b.2) handle multiple tracks
-         TrackControl[] tracks=processor.getTrackControls();
-         System.out.println("Number of tracks="+tracks.length);
-         boolean enabled=false;   
-         for (int i=0; i<tracks.length; i++)
-         {  TrackControl track_control=tracks[i];
-            Format format=track_control.getFormat();
-            System.out.println("track#"+i+" format:"+format.toString());
-            if (!enabled)
-            {  if (format.toString().indexOf("Stereo")>0 || format.toString().indexOf("Mono")>0)
-               {  if (type.equals("audio")) enabled=track_control.setFormat(new AudioFormat(AudioFormat.GSM_RTP))!=null;
-                  else enabled=false;
-               }
-               else
-               {  if (type.equals("video")) enabled=track_control.setFormat(new VideoFormat(VideoFormat.H263_RTP))!=null;
-                  else enabled=false;
-               }
-               track_control.setEnabled(enabled);
-               System.out.println("track#"+i+" enabled="+enabled);
-            }
-            else
-            {  track_control.setEnabled(false);
-               System.out.println("track#"+i+" disabled");
-            }
-         }
-      }      
-      
-      // #### 4) realize the processor
-      processor.realize();
-      while(processor.getState()<processor.Realized) ; // wait..
-      System.out.println("Processor realized");
-        
-         
-      String media_url="rtp://"+dest_addr+":"+dest_port+"/"+type+"/1";     
-      dest=new MediaLocator(media_url);
-   } 
- 
-
-   /** Starts sending the stream */
-   public String start()
-   {  
-      // #### 5) create and start the DataSink
-      try
-      {  sink=Manager.createDataSink(processor.getDataOutput(),dest);
-      }
-      catch (NoDataSinkException e) { e.printStackTrace(); return "Failed creating DataSink"; }
-      
-      System.out.println("DataSink created");
-      System.out.println("Dest= "+sink.getOutputLocator()+" , "+sink.getContentType());
-
-      try
-      {  sink.open();
-         System.out.println("DataSink opened");      
-         sink.start();
-      }
-      catch (IOException e) { e.printStackTrace(); return "Failed starting DataSink"; } 
-          
-      processor.start();
-      System.out.println("Start sending");
-      
-      return null;
-   }
-   
-   
-   /** Stops the stream */
-   public String stop()
-   {  
-      try
-      {  sink.stop();
-         sink.close();
-      }
-      catch (IOException e) { return "Failed closing DataSink"; } 
-
-      System.out.println("Stop sending");
-      
-      processor.stop();
-      processor.deallocate();
-      processor.close();
-      
-      return null;
-   }
-
-   /** Creates the processor */
-   private String createProcessor(MediaLocator locator)
-   {  DataSource datasrc;  
-      if (locator==null) return "MediaLocator is null"; 
-      
-      try
-      {  datasrc=Manager.createDataSource(locator);
-      }
-      catch (Exception e) { e.printStackTrace(); return "Couldn't create DataSource"; }
- 
-      try
-      {  processor=Manager.createProcessor(datasrc);
-      }
-      catch (NoProcessorException npe) { npe.printStackTrace(); return "Couldn't create processor"; }
-      catch (IOException ioe) { ioe.printStackTrace(); return "IOException creating processor"; }
-      
-      return null;
-   }   
-
-
-   /** Gets the system audio (mic?) */
-   private MediaLocator getAudio()
-   {  return getMediaDevice(new AudioFormat(AudioFormat.LINEAR, 8000, 8, 1));
-   }
-  
-  
-   /** Gets the system video (cam?) */
-   private MediaLocator getVideo()
-   { 
-      return getMediaDevice(null);
-   }
- 
-  
-   /** Gets MediaLocator for a system device */
-   private MediaLocator getMediaDevice(Format format)
-   { 
-      if (format!=null) System.out.println("Selected format: "+format.toString());
-      else System.out.println("Selected format: any");
-      // Get the CaptureDeviceInfo for the live audio or video capture device
-      Vector deviceList = CaptureDeviceManager.getDeviceList(format);
-      System.out.println("List of devices: "+deviceList.size());
-      if (deviceList.size()==0)
-      {  System.out.println("No device found");
-         return null;
-      }
-      for (int i=0; i<deviceList.size();i++)
-      {  CaptureDeviceInfo di=(CaptureDeviceInfo)deviceList.elementAt(i);
-         System.out.println("device "+i+":"+di.getName());
-      }
-      
-      CaptureDeviceInfo di=(CaptureDeviceInfo)deviceList.elementAt(deviceList.size()-1);
-      MediaLocator media_locator=di.getLocator();
-      //System.out.println("MediaLocator: "+media_locator);
-      return media_locator;
-   }
-  
-  
-  
-  
-  // ******************************* MAIN *******************************
-
-   /** The main method. */
-   public static void main(String[] args)
-   {
-      if (args.length<3)
-      {
-         System.out.println("usage:\n  java JMediaSender audio|video [<media>] <dest_addr> <dest_port>");
-         System.out.println("\n    with: <media> = \"file://filename\"");
-      }
-      else
-      {  
-         String type=args[0];
-         String media=null;
-         String addr;
-         int port;
-         if (args.length>=4)
-         {  media=args[1];
-            addr=args[2];
-            port=Integer.parseInt(args[3]);
-         }
-         else
-         {  addr=args[1];
-            port=Integer.parseInt(args[2]);
-         }
-         
-         JMediaSender sender = new JMediaSender(type,media,addr,port);
-
-         String result;
-         result=sender.start();
-         if (result!=null)
-         {  System.out.println("ERROR: "+result); 
-            System.exit(0);
-         }
-         
-         System.out.println("Press 'Return' to stop");
-         try { System.in.read(); } catch (IOException e) { e.printStackTrace(); }
-
-         result=sender.stop();
-         if (result!=null)
-         {  System.out.println("ERROR: "+result); 
-            System.exit(0);
-         }
-      }
-   }
-
-}
\ No newline at end of file
diff --git a/bbb-voice/src/main/java/local/media/JVisualReceiver.java b/bbb-voice/src/main/java/local/media/JVisualReceiver.java
deleted file mode 100644
index 5f92abde5afa0f7a621ed7bba96b86ee31e9c658..0000000000000000000000000000000000000000
--- a/bbb-voice/src/main/java/local/media/JVisualReceiver.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package local.media;
-
-
-import javax.media.*;
-import javax.media.format.*;
-
-import java.awt.*;
-import javax.swing.*;
-import java.awt.event.*;
-import java.util.Vector;
-import javax.swing.border.Border;
-
-
-
-/** JVisualReceiver is a JMF-based graphical media receiver.
-  */
-public class JVisualReceiver extends Frame implements JMediaReceiverListener
-{
-
-   JMediaReceiver receiver;
-
-   // GUI attributes
-   Panel panel = new Panel();
-   Image icon=Toolkit.getDefaultToolkit().getImage("media/media/icon.gif");
-   Image image=Toolkit.getDefaultToolkit().getImage("media/media/logo.gif");
-
-   Component visualComp=null, controlComp=null;
-
-   /** Constructs a VisualReceiver */
-   public JVisualReceiver(String media_type, int port)
-   {
-      receiver=new JMediaReceiver(media_type,port,this);
-      try
-      { jbInit();
-      }
-      catch(Exception e) { e.printStackTrace(); }
-   }
-
-
-   public String start()
-   {
-      return receiver.start();
-   }
-
-
-   public String stop()
-   {
-      return receiver.stop();
-   }
-
-
-   private void jbInit() throws Exception
-   {
-      this.setTitle("Zoolu Player");
-      this.setIconImage(icon);
-      this.addWindowListener(new java.awt.event.WindowAdapter()
-      {  public void windowClosing(WindowEvent e) { this_windowClosing(); }
-      });
-      visualComp=new ImagePanel(image);
-      panel.setLayout(new BorderLayout());
-      panel.add(visualComp,BorderLayout.CENTER);
-      this.add(panel);
-
-      this.setSize(new Dimension(150, 150));
-      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-      Dimension frameSize = this.getSize();
-      if (frameSize.height > screenSize.height)
-      frameSize.height = screenSize.height;
-      if (frameSize.width > screenSize.width)
-      frameSize.width = screenSize.width;
-      this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
-      this.setVisible(true);
-   }
-
-   public synchronized void controllerUpdate(ControllerEvent event)
-   {  //System.out.println("DEBUG: controllerUpdate()");
-      if (event instanceof RealizeCompleteEvent || event instanceof FormatChangeEvent)
-      {  if (event instanceof RealizeCompleteEvent) System.out.println("RealizeComplete event");
-         if (event instanceof FormatChangeEvent) System.out.println("FormatChange event");
-
-         if ((visualComp = receiver.getVisualComponent()) != null) panel.add("Center", visualComp);
-         if ((controlComp = receiver.getControlPanelComponent()) != null) panel.add("South", controlComp);
-         this.setVisible(true);
-         return;
-      }
-      else
-      {  //System.out.println("Event: "+event.toString()+": Do nothing");
-      }
-   }
-
-   // ******************************* MAIN *******************************
-
-   public static void main(String[] args)
-   {
-      if (args.length>=2)
-      try
-      {  int port=Integer.parseInt(args[1]);
-         JVisualReceiver tv = new JVisualReceiver(args[0],port);
-         tv.start();
-         return;
-      }
-      catch (Exception e) { System.out.println("Error creating the receiver"); }
-
-      System.out.println("usage:\n  java JVisualReceiver audio|video <local_port>");
-   }
-
-   void this_windowClosing()
-   {  if (receiver!=null) receiver.stop();
-      System.exit(0);
-   }
-
-}
-
-
-  // ********************************************************************
-  // ************************* class ImagePanel *************************
-  // ********************************************************************
-
-class ImagePanel extends JPanel
-{  Image image;
-
-   public ImagePanel(Image image) { this.image = image; }
-
-   public void paintComponent(Graphics g)
-   {  super.paintComponent(g); //paint background
-      int x=this.getWidth();
-      int y=this.getHeight();
-      g.drawImage(image,0,0,x,y,this); //draw the image scaled
-   }
-}
-
diff --git a/bbb-voice/src/main/java/local/ua/JMFAudioLauncher.java b/bbb-voice/src/main/java/local/ua/JMFAudioLauncher.java
deleted file mode 100644
index c2aa3332619b86237752f6176dd9adb98a22489d..0000000000000000000000000000000000000000
--- a/bbb-voice/src/main/java/local/ua/JMFAudioLauncher.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package local.ua;
-
-
-import local.media.JMediaReceiver;
-import local.media.JMediaSender;
-import org.zoolu.sip.provider.SipStack;
-import org.zoolu.tools.Log;
-import org.zoolu.tools.LogLevel;
-//import org.zoolu.tools.Parser;
-
-//import java.util.Iterator;
-//import java.util.Vector;
-//import java.io.*;
-
-
-/** Audio launcher */
-public class JMFAudioLauncher implements MediaLauncher
-{
-   /** Event logger. */
-   Log log=null;
-
-   /** Runtime media process */
-   Process media_process=null;
-   
-   int localport;
-   int remoteport;
-   String remoteaddr;
-   
-   int dir; // duplex= 0, recv-only= -1, send-only= +1; 
-
-   JMediaSender sender=null;
-   JMediaReceiver receiver=null;
-
-   /** Costructs the audio launcher */
-   public JMFAudioLauncher(int local_port, String remote_addr, int remote_port, int direction, Log logger)
-   {  log=logger;
-      localport=local_port;
-      remoteport=remote_port;
-      remoteaddr=remote_addr;
-      // Patch for working with JMF with local streams
-      if (remote_addr.startsWith("127."))
-      {  printLog("Patch for JMF: replaced local destination address "+remote_addr+" with 255.255.255.255");
-         remote_addr="255.255.255.255";
-      }
-      dir=direction;
-      if (dir>=0) sender=new JMediaSender("audio",null,remote_addr,remote_port);
-      if (dir<=0) receiver=new JMediaReceiver("audio",local_port,null);
-   }
-
-   /** Starts media application */
-   public boolean startMedia()
-   {  printLog("launching JMF-Audio...");
-      String err1=null, err2=null;
-
-      if (sender!=null) err1=sender.start();
-      if (err1!=null) printLog("Error trying to send audio stream: "+err1);    
-
-      if (receiver!=null) err2=receiver.start();
-      if (err2!=null) printLog("Error trying to receive audio stream: "+err2);    
-
-      return (err1==null && err2==null);      
-   }
-
-   /** Stops media application */
-   public boolean stopMedia()
-   {  String err1=null, err2=null;
-
-      if (sender!=null) err1=sender.stop();      
-      if (err1!=null) printLog("Error stopping audio sender: "+err1);    
-
-      if (receiver!=null) err2=receiver.stop();      
-      if (err2!=null) printLog("Error stopping audio receiver: "+err2);    
-
-      return (err1==null && err2==null);      
-   }
-
-
-
-   // ****************************** Logs *****************************
-
-   /** Adds a new string to the default Log */
-   private void printLog(String str)
-   {  if (log!=null) log.println("JMFAudioLauncher: "+str,SipStack.LOG_LEVEL_UA+LogLevel.HIGH);  
-      //if (LOG_LEVEL<=LogLevel.HIGH) System.out.println("JMFAudioLauncher: "+str);
-      System.out.println("JMFAudioLauncher: "+str);
-   }
-}
\ No newline at end of file
diff --git a/bbb-voice/src/main/java/local/ua/JMFVideoLauncher.java b/bbb-voice/src/main/java/local/ua/JMFVideoLauncher.java
deleted file mode 100644
index 33e69a8aded10ac2615407b8c4ebfc700106737c..0000000000000000000000000000000000000000
--- a/bbb-voice/src/main/java/local/ua/JMFVideoLauncher.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package local.ua;
-
-
-import local.media.JMediaSender;
-import local.media.JVisualReceiver;
-import org.zoolu.sip.provider.SipStack;
-import org.zoolu.tools.Log;
-import org.zoolu.tools.LogLevel;
-//import org.zoolu.tools.Parser;
-
-//import java.util.Iterator;
-//import java.util.Vector;
-//import java.io.*;
-
-
-/** Video launcher */
-public class JMFVideoLauncher implements MediaLauncher
-{
-   /** Event logger. */
-   Log log=null;
-   
-   /** Runtime media process */
-   Process media_process=null;
-   
-   int localport;
-   int remoteport;
-   String remoteaddr;
-   
-   int dir; // duplex= 0, recv-only= -1, send-only= +1; 
-
-   JMediaSender sender=null;
-   JVisualReceiver receiver=null;
-   
-   /** Costructs the video launcher */
-   public JMFVideoLauncher(int local_port, String remote_addr, int remote_port, int direction, Log logger)
-   {  log=logger;
-      localport=local_port;
-      remoteport=remote_port;
-      remoteaddr=remote_addr;
-      dir=direction;
-      // Patch for working with JMF with local streams
-      if (remote_addr.startsWith("127."))
-      {  printLog("Patch for JMF: replaced local destination address "+remote_addr+" with 255.255.255.255");
-         remote_addr="255.255.255.255";
-      }
-      if (dir>=0) sender=new JMediaSender("video",null,remote_addr,remote_port);
-      //if (dir>=0) sender=new JMediaSender("video","file://C:\\users\\mp3\\__video\\cartoons\\ufo_robot.mpg",remote_addr,remote_port);
-      if (dir<=0) receiver=new JVisualReceiver("video",local_port);
-   }
-
-   /** Starts media application */
-   public boolean startMedia()
-   {  printLog("launching JMF-Video...");
-      String err1=null, err2=null;
-
-      if (sender!=null) err1=sender.start();
-      if (err1!=null) printLog("Error trying to send video stream: "+err1);    
-
-      if (receiver!=null) err2=receiver.start();
-      if (err2!=null) printLog("Error trying to receive video stream: "+err2);    
-
-      return (err1==null && err2==null);      
-   }
-
-   /** Stops media application */
-   public boolean stopMedia()
-   {  String err1=null, err2=null;
-
-      if (sender!=null) err1=sender.stop();      
-      if (err1!=null) printLog("Error stopping video sender: "+err1);    
-
-      if (receiver!=null) err2=receiver.stop();      
-      if (err2!=null) printLog("Error stopping video receiver: "+err2);    
-
-      return (err1==null && err2==null);      
-   }
-
-
-
-   // ****************************** Logs *****************************
-
-   /** Adds a new string to the default Log */
-   private void printLog(String str)
-   {  if (log!=null) log.println("JMFVideoLauncher: "+str,SipStack.LOG_LEVEL_UA+LogLevel.HIGH);  
-      //if (LOG_LEVEL<=LogLevel.HIGH) System.out.println("JMFVideoLauncher: "+str);
-      System.out.println("JMFVideoLauncher: "+str);
-   }
-
-}
\ No newline at end of file