diff --git a/src/main/java/bdv/ij/BigDataBrowserPlugin.java b/src/main/java/bdv/ij/BigDataBrowserPlugin.java
index a095c0742e37ee44ee0ee3179fb5d7c08a6b06eb..e9fdfd3c4b6ef57fe5d011b1589758495ef17c8f 100644
--- a/src/main/java/bdv/ij/BigDataBrowserPlugin.java
+++ b/src/main/java/bdv/ij/BigDataBrowserPlugin.java
@@ -2,15 +2,19 @@ package bdv.ij;
 
 import bdv.BigDataViewer;
 import bdv.ij.util.ProgressWriterIJ;
+
 import com.google.gson.stream.JsonReader;
+
 import ij.IJ;
 import ij.ImageJ;
 import ij.plugin.PlugIn;
 import mpicbg.spim.data.SpimDataException;
+
 import org.apache.commons.lang.StringUtils;
 
 import javax.imageio.ImageIO;
 import javax.swing.*;
+
 import java.awt.*;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
@@ -25,8 +29,11 @@ import java.util.Map;
 
 public class BigDataBrowserPlugin implements PlugIn
 {
-	Map< String, ImageIcon > imageMap = new HashMap< String, ImageIcon >();
-	Map< String, String > datasetUrlMap = new HashMap< String, String >();
+	private final Map< String, ImageIcon > imageMap = new HashMap< String, ImageIcon >();
+
+	private final Map< String, String > datasetUrlMap = new HashMap< String, String >();
+
+	public static String serverUrl = "http://";
 
 	@Override
 	public void run( final String arg )
@@ -36,111 +43,102 @@ public class BigDataBrowserPlugin implements PlugIn
 		{
 			image = ImageIO.read( new URL( "http://fiji.sc/_images/a/ae/Fiji-icon.png" ) );
 		}
-		catch ( IOException e )
+		catch ( final IOException e )
 		{
 			e.printStackTrace();
 		}
 
-		String serverUrl = "http://scicomp-pc-1-10gb:8070";
-
-		Object remoteUrl = JOptionPane.showInputDialog( null, "Enter BigDataServer Remote URL:", "BigDataServer",
+		final Object remoteUrl = JOptionPane.showInputDialog( null, "Enter BigDataServer Remote URL:", "BigDataServer",
 				JOptionPane.QUESTION_MESSAGE, new ImageIcon( image ), null, serverUrl );
 
 		if ( remoteUrl == null )
 			return;
 
-		ArrayList< String > nameList = new ArrayList< String >();
-		boolean ret = getDatasetList( remoteUrl.toString(), nameList );
-		if ( !ret )
-			IJ.showMessage( "The server is not available." );
-		else
-			createDatasetListUI( remoteUrl.toString(), nameList.toArray() );
+		serverUrl = remoteUrl.toString();
 
+		final ArrayList< String > nameList = new ArrayList< String >();
+		try
+		{
+			getDatasetList( serverUrl, nameList );
+		}
+		catch ( final IOException e )
+		{
+			IJ.showMessage( "Error connecting to server at " + serverUrl );
+			e.printStackTrace();
+		}
+		createDatasetListUI( serverUrl, nameList.toArray() );
 	}
 
-	private boolean getDatasetList( String remoteUrl, ArrayList< String > nameList )
+	private boolean getDatasetList( final String remoteUrl, final ArrayList< String > nameList ) throws IOException
 	{
-		try
-		{
-			// Get JSON string from the server
-			final URL url = new URL( remoteUrl + "/json/" );
+		// Get JSON string from the server
+		final URL url = new URL( remoteUrl + "/json/" );
+
+		final InputStream is = url.openStream();
+		final JsonReader reader = new JsonReader( new InputStreamReader( is, "UTF-8" ) );
 
-			final InputStream is = url.openStream();
-			final JsonReader reader = new JsonReader( new InputStreamReader( is, "UTF-8" ) );
+		reader.beginObject();
+
+		while ( reader.hasNext() )
+		{
+			// skipping id
+			reader.nextName();
 
 			reader.beginObject();
 
+			String id = null, description = null, thumbnailUrl = null, datasetUrl = null;
 			while ( reader.hasNext() )
 			{
-				// skipping id
-				reader.nextName();
-
-				reader.beginObject();
-
-				String name = reader.nextName();
-				String id = null, description = null, thumbnailUrl = null, datasetUrl = null;
-
+				final String name = reader.nextName();
 				if ( name.equals( "id" ) )
-				{
 					id = reader.nextString();
-					nameList.add( id );
-				}
-
-				name = reader.nextName();
-				if ( name.equals( "description" ) )
-				{
+				else if ( name.equals( "description" ) )
 					description = reader.nextString();
-				}
-
-				name = reader.nextName();
-				if ( name.equals( "thumbnailUrl" ) )
-				{
+				else if ( name.equals( "thumbnailUrl" ) )
 					thumbnailUrl = reader.nextString();
-					if ( StringUtils.isNotEmpty( thumbnailUrl ) )
-						imageMap.put( id, new ImageIcon( new URL( thumbnailUrl ) ) );
-				}
-
-				name = reader.nextName();
-				if ( name.equals( "datasetUrl" ) )
-				{
+				else if ( name.equals( "datasetUrl" ) )
 					datasetUrl = reader.nextString();
-					datasetUrlMap.put( id, datasetUrl );
-				}
+			}
 
-				reader.endObject();
+			if ( id != null )
+			{
+				nameList.add( id );
+				if ( thumbnailUrl != null && StringUtils.isNotEmpty( thumbnailUrl ) )
+					imageMap.put( id, new ImageIcon( new URL( thumbnailUrl ) ) );
+				if ( datasetUrl != null )
+					datasetUrlMap.put( id, datasetUrl );
 			}
 
 			reader.endObject();
-
-		}
-		catch ( IOException exception )
-		{
-			exception.printStackTrace();
-			return false;
 		}
 
+		reader.endObject();
+
+		reader.close();
+
 		return true;
 	}
 
-	private void createDatasetListUI( String remoteUrl, Object[] values )
+	private void createDatasetListUI( final String remoteUrl, final Object[] values )
 	{
-		JList list = new JList( values );
+		final JList list = new JList( values );
 		list.setCellRenderer( new ThumbnailListRenderer() );
 		list.addMouseListener( new MouseAdapter()
 		{
-			public void mouseClicked( MouseEvent evt )
+			@Override
+			public void mouseClicked( final MouseEvent evt )
 			{
-				JList list = ( JList ) evt.getSource();
+				final JList list = ( JList ) evt.getSource();
 				if ( evt.getClickCount() == 2 )
 				{
-					int index = list.locationToIndex( evt.getPoint() );
-					String key = String.valueOf( list.getModel().getElementAt( index ) );
+					final int index = list.locationToIndex( evt.getPoint() );
+					final String key = String.valueOf( list.getModel().getElementAt( index ) );
 					System.out.println( key );
 					try
 					{
 						BigDataViewer.view( datasetUrlMap.get( key ), new ProgressWriterIJ() );
 					}
-					catch ( SpimDataException e )
+					catch ( final SpimDataException e )
 					{
 						e.printStackTrace();
 					}
@@ -148,10 +146,10 @@ public class BigDataBrowserPlugin implements PlugIn
 			}
 		} );
 
-		JScrollPane scroll = new JScrollPane( list );
+		final JScrollPane scroll = new JScrollPane( list );
 		scroll.setPreferredSize( new Dimension( 600, 800 ) );
 
-		JFrame frame = new JFrame();
+		final JFrame frame = new JFrame();
 		frame.setTitle( "BigDataServer Browser - " + remoteUrl );
 		frame.add( scroll );
 		frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
@@ -162,16 +160,17 @@ public class BigDataBrowserPlugin implements PlugIn
 
 	public class ThumbnailListRenderer extends DefaultListCellRenderer
 	{
+		private static final long serialVersionUID = 1L;
 
 		Font font = new Font( "helvetica", Font.BOLD, 12 );
 
 		@Override
 		public Component getListCellRendererComponent(
-				JList list, Object value, int index,
-				boolean isSelected, boolean cellHasFocus )
+				final JList list, final Object value, final int index,
+				final boolean isSelected, final boolean cellHasFocus )
 		{
 
-			JLabel label = ( JLabel ) super.getListCellRendererComponent(
+			final JLabel label = ( JLabel ) super.getListCellRendererComponent(
 					list, value, index, isSelected, cellHasFocus );
 			label.setIcon( imageMap.get( ( String ) value ) );
 			label.setHorizontalTextPosition( JLabel.RIGHT );
@@ -182,7 +181,7 @@ public class BigDataBrowserPlugin implements PlugIn
 
 	public static void main( final String[] args )
 	{
-		new ImageJ();
+		ImageJ.main( args );
 		new BigDataBrowserPlugin().run( null );
 	}
 }