code: function shoestring( prim, sec ){
  		var pType = typeof( prim ),
  				ret = [],
  				sel;
  
  		// return an empty shoestring object
  		if( !prim ){
  			return new Shoestring( ret );
  		}
  
  		// ready calls
  		if( prim.call ){
  			return shoestring.ready( prim );
  		}
  
  		// handle re-wrapping shoestring objects
  		if( prim.constructor === Shoestring && !sec ){
  			return prim;
  		}
  
  		// if string starting with <, make html
  		if( pType === "string" && prim.indexOf( "<" ) === 0 ){
  			var dfrag = doc.createElement( "div" );
  
  			dfrag.innerHTML = prim;
  
  			// TODO depends on children (circular)
  			return shoestring( dfrag ).children().each(function(){
  				dfrag.removeChild( this );
  			});
  		}
  
  		// if string, it's a selector, use qsa
  		if( pType === "string" ){
  			if( sec ){
  				return shoestring( sec ).find( prim );
  			}
  
  				sel = doc.querySelectorAll( prim );
  
  			return new Shoestring( sel, prim );
  		}
  
  		// array like objects or node lists
  		if( Object.prototype.toString.call( pType ) === '[object Array]' ||
  				(win.NodeList && prim instanceof win.NodeList) ){
  
  			return new Shoestring( prim, prim );
  		}
  
  		// if it's an array, use all the elements
  		if( prim.constructor === Array ){
  			return new Shoestring( prim, prim );
  		}
  
  		// otherwise assume it's an object the we want at an index
  		return new Shoestring( [prim], prim );
  	}
docs: The shoestring object constructor.
  
  @param {string,object} prim The selector to find or element to wrap.
  @param {object} sec The context in which to match the `prim` selector.
  @returns shoestring
  @this window