docs: function Texture(context, options) {
  		if (!(this instanceof Texture))
  			return new Texture(context, options);
  		
  		//sets up base Kami object..
  		BaseObject.call(this, context);
  
  		/**
  		 * When a texture is created, we keep track of the arguments provided to 
  		 * its constructor. On context loss and restore, these arguments are re-supplied
  		 * to the Texture, so as to re-create it in its correct form.
  		 *
  		 * This is mainly useful if you are procedurally creating textures and passing
  		 * their data directly (e.g. for generic lookup tables in a shader). For image
  		 * or media based textures, it would be better to use an AssetManager to manage
  		 * the asynchronous texture upload.
  		 *
  		 * Upon destroying a texture, a reference to this is also lost.
  		 *
  		 * @property managedArgs
  		 * @type {Object} the options given to the Texture constructor, or undefined
  		 */
  		this.managedArgs = options;
  
  		/**
  		 * The WebGLTexture which backs this Texture object. This
  		 * can be used for low-level GL calls.
  		 * 
  		 * @type {WebGLTexture}
  		 */
  		this.id = null; //initialized in create()
  
  		/**
  		 * The target for this texture unit, i.e. TEXTURE_2D. Subclasses
  		 * should override the create() method to change this, for correct
  		 * usage with context restore.
  		 * 
  		 * @property target
  		 * @type {GLenum}
  		 * @default  gl.TEXTURE_2D
  		 */
  		this.target = this.context.gl.TEXTURE_2D;
  
  		/**
  		 * The width of this texture, in pixels.
  		 * 
  		 * @property width
  		 * @readOnly
  		 * @type {Number} the width
  		 */
  		this.width = 0; //initialized on texture upload
  
  		/**
  		 * The height of this texture, in pixels.
  		 * 
  		 * @property height
  		 * @readOnly
  		 * @type {Number} the height
  		 */
  		this.height = 0; //initialized on texture upload
  
  		this.__shape = [0, 0];
  
  		/**
  		 * The S wrap parameter.
  		 * @property {GLenum} wrapS
  		 */
  		this.wrapS = Texture.DEFAULT_WRAP;
  		/**
  		 * The T wrap parameter.
  		 * @property {GLenum} wrapT
  		 */
  		this.wrapT = Texture.DEFAULT_WRAP;
  		/**
  		 * The minifcation filter.
  		 * @property {GLenum} minFilter 
  		 */
  		this.minFilter = Texture.DEFAULT_FILTER;
  		
  		/**
  		 * The magnification filter.
  		 * @property {GLenum} magFilter 
  		 */
  		this.magFilter = Texture.DEFAULT_FILTER;
  
  		//manage if we're dealing with a kami-context
  		this.context.addManagedObject(this);
  		this.create();
  	}