public List<Station> findStations( String prefix ) throws ApiException {
		if ( prefix.length() < 2 )
			return Collections.emptyList();

		prefix = prefix.toUpperCase();

		try {
			Set<Station> fromServer = findStationsOnServer( prefix.substring( 0, 2 ) );
			List<Station> results = new ArrayList<Station>();

			for ( Station st : fromServer )
				if ( st.name.startsWith( prefix ) )
					results.add( st );

			return results;
		} catch ( ClientProtocolException e ) {
			throw new ApiException( "Error fetching stations due to protocol error", e );
		} catch ( IOException e ) {
			throw new ApiException( "Error fetching stations due to IO error", e );
		} catch ( JSONException e ) {
			throw new ApiException( "Error fetching stations due to parse error", e );
		}
	}