      * loading failure.
      */
     public static function loadURL (url :String, executor :Executor=null,
-        scaleFactor :Number=-1, generateMipMaps :Boolean=false) :Future {
-        return (executor || new Executor(1)).submit(
-            new Loader(url, scaleFactor, generateMipMaps).load);
+        scaleFactor :Number=-1) :Future {
+        return new LibraryLoader().setExecutor(executor).setScaleFactor(scaleFactor)
+            .loadURL(url);
+    }
+
+    /**
+     * Sets the executor instance to use with this loader.
+     *
+     * @param executor The executor on which the loading should run. If left null (the default),
+     * it'll run on a new single-use executor.
+     */
+    public function setExecutor (executor :Executor) :LibraryLoader {
+        _executor = executor;
+        return this;
+    }
+
+    /**
+     * Sets the scale factor value to use with this loader.
+     *
+     * @param scaleFactor the desired scale factor of the textures to load. If the Library contains
+     * textures with multiple scale factors, loader will load the textures with the scale factor
+     * closest to this value. If scaleFactor <= 0 (the default), Starling.contentScaleFactor will be
+     * used.
+     */
+    public function setScaleFactor (scaleFactor :Number) :LibraryLoader {
+        _scaleFactor = scaleFactor;
+        return this;
+    }
+
+    /**
+     * Sets the mip map generation for this loader.
+     *
+     * @param generateMipMaps If true (defaults to false), flump will instruct Starling to generate
+     * mip maps for all loaded textures. Scaling will look better if mipmaps are enabled, but there
+     * is a loading time and memory usage penalty.
+     */
+    public function setGenerateMipMaps (generateMipMaps :Boolean) :LibraryLoader {
+        _generateMipMaps = generateMipMaps;
+        return this;
+    }
+
+    /**
+     * Loads a Library from the zip in the given bytes, using the settings configured in this
+     * loader.
+     *
+     * @param bytes The bytes containing the zip
+     */
+    public function loadBytes (bytes :ByteArray) :Future {
+        return (_executor || new Executor(1)).submit(
+            new Loader(bytes, _scaleFactor, _generateMipMaps).load);
+    }
+
+    /**
+     * Loads a Library from the zip at the given url, using the settings configured in this
+     * loader.
+     *
+     * @param url The url where the zip can be found
+     */
+    public function loadURL (url :String) :Future {
+        return (_executor || new Executor(1)).submit(
+            new Loader(url, _scaleFactor, _generateMipMaps).load);
     }
 
     /** @private */

    /**
     * Loads a Library from the zip in the given bytes.
     *
     * @param bytes The bytes containing the zip
     *
     * @param executor The executor on which the loading should run. If not specified, it'll run on

     * zip must equal the version compiled into the parsing code for parsing to succeed.
     */
    public static const VERSION :String = "2";

    protected var _executor :Executor;
    protected var _scaleFactor :Number = -1;
    protected var _generateMipMaps :Boolean = false;
}

}
