var Interface = function(object, interfaceObject){
		
	if(!interfaceObject['getInterfaceName']){
		alert('Failure:\ngetInterfaceName() method is required for all interfaces!');
		throw Error('Failure:\ngetInterfaceName() method is required for all interfaces!');
	}
	
	if(!interfaceObject['setUpInterface']){
		alert('Failure:\nsetUpInterface(instanceInterface) method is required for all interfaces!');
		throw Error('Failure:\nsetUpInterface(instanceInterface) method is required for all interfaces!');
	}
	
	//Casting method added to object.
	if(!object['cast']){
		object['cast'] = function(interfaceToCast){
			return object.interfaces[interfaceToCast];
		}
	}
	
	//Interface array, set on the object.
	if(!object['interfaces']){
		object['interfaces']=[];
	}
	object.interfaces[interfaceObject.getInterfaceName()] = interfaceObject;
	
	//Closure sent to interface
	interfaceObject.setUpInterface(
		function(memberName){
			if(!object[memberName]){
				alert('Interface Error!\nMember: '+memberName+' has not been implemented for current interface: '+interfaceObject.getInterfaceName());
				throw new Error('Interface Error!\nMember: '+memberName+' has not been implemented for current interface: '+interfaceObject.getInterfaceName());
			}else{
				return object[memberName];
			}
		}
	);
	
	//Return interfaced object, now linked to object reference.
	return interfaceObject;
}