@Override
	public void restart() throws MusicPlayerException {
		if ( this.mStreamPlayerRunnable == null ) {
			throw new IllegalStateException( "can't restart. not started yet" );
		}
		if ( this.mStreamPlayerRunnable.isStopped() ) {
			try {
				this.mStreamPlayerRunnable.join();
			}
			catch (InterruptedException e) {
				throw new MusicPlayerException( e );
			}
			this.mStreamPlayerRunnable.reset();
			this.mStreamPlayerRunnable.seek( 0 );
			this.mPlaybackExecutor.execute( this.mStreamPlayerRunnable );
		}
		else {
			this.mStreamPlayerRunnable.seek( 0 );
		}
	}