private Image getMainImage()
	{
		//First check if image is already loaded, load it if it is not, then
		//return the fully prepared image. If tbe image and/or imageTracker
		//have not been initialised, a NullPointerException is thrown
		try
		{
			if(true == imageTracker.checkID(0))
				return mainImage;
			else
			{
				imageTracker.waitForID(0);
				return mainImage;
			}
		}
		//If mainImage and/or imageTracker are not initialised, this block will
		//be executed
		catch(NullPointerException e)
		{
			//Initialise mainImage object from file if required
			if(null == mainImage)
				mainImage = (loadImage(imageParameters.getPath()));

			//Create imageTracker to track images for imagePanel and add the
			//main image to it, if not already done
			if(null == imageTracker)
			{
				imageTracker = new MediaTracker(imagePanel);
				imageTracker.addImage(mainImage,0);
			}

			//Re-invoke this method to return fully prepared image
			return getMainImage();
		}
		//If imageTracker is interrupted whilst loading the image, no image can
		//be returned.
		catch (InterruptedException e)
		{
			//Restore interrupted status
			Thread.currentThread().interrupt();
			return null;
		}
	}