[utilTack description]
@param  {external.Function} methodCallback [description]
@param  {external.Array}    methodSchema   [description]
@return {external.Function}                [description]
function utilTack( methodCallback, methodSchema ) {
        function tackDefault( opt, success, complete ) {
            var async;

            if ( opt.async ) {
                async = opt.async;
                delete opt.async;
            }

            // reverse compatibility
            success = success || opt.success || Break;
            complete = complete || opt.complete || Break;

            if ( async ) {
                nextTick( nextTickTackDefault, methodCallback, this, opt, success, complete );
            }
            else {
                methodCallback.call( this, opt, success );
                complete.call( this, opt );
            }
            
            return this;
        }

        Object.defineProperty( tackDefault, 'tick', { value: methodSchema || true });
        Object.defineProperty( tackDefault, 'callback', { value: methodCallback });

        return tackDefault;
    }