def submit(func, *args, **kwargs):
    """Submit an independent asynchronous :class:`~scoop._types.Future` that will
    either run locally or remotely as `func(*args)`.

    :param func: Any picklable callable object (function or class object with
        *__call__* method); this object will be called to execute the Future.
        The callable must return a value.
    :param args: A tuple of positional arguments that will be passed to the
        func object.
    :param kwargs: A dictionary of additional arguments that will be passed to
        the func object.

    :returns: A future object for retrieving the Future result.

    On return, the Future can be pending execution locally but may also be
    transfered remotely depending on load or on remote distributed workers. You
    may carry on with any further computations while the Future completes.
    Result retrieval is made via the :meth:`~scoop._types.Future.result`
    function on the Future."""
    child = _createFuture(func, *args, **kwargs)

    control.futureDict[control.current.id].children[child] = None
    control.execQueue.append(child)
    return child