def get_resource(self, uri, resource_type=None, response_format=None):

		'''
		Retrieve resource:
			- Issues an initial GET request
			- If 200, continues, 404, returns False, otherwise raises Exception
			- Parse resource type
				- If custom resource type parser provided, this fires
				- Else, or if custom parser misses, fire HEAD request and parse LDP resource type from Link header
			- Return instantiated pyfc4 resource

		Args:
			uri (rdflib.term.URIRef,str): input URI
			resource_type (): resource class e.g. BasicContainer, NonRDFSource, or extensions thereof
			response_format (str): expects mimetype / Content-Type header such as 'application/rdf+xml', 'text/turtle', etc.

		Returns:
			Resource
		'''

		# handle uri
		uri = self.parse_uri(uri)

		# remove fcr:metadata if included, as handled below
		if uri.toPython().endswith('/fcr:metadata'):
			uri = rdflib.term.URIRef(uri.toPython().rstrip('/fcr:metadata'))

		# fire GET request
		get_response = self.api.http_request(
			'GET',
			"%s/fcr:metadata" % uri,
			response_format=response_format)

		# 404, item does not exist, return False
		if get_response.status_code == 404:
			logger.debug('resource uri %s not found, returning False' % uri)
			return False

		# assume exists, parse headers for resource type and return instance
		elif get_response.status_code == 200:

			# if resource_type not provided
			if not resource_type:

				# if custom resource type parser affixed to repo instance, fire
				if self.custom_resource_type_parser:
					logger.debug("custom resource type parser provided, attempting")
					resource_type = self.custom_resource_type_parser(self, uri, get_response)

				# parse LDP resource type from headers if custom resource parser misses,
				# or not provided
				if not resource_type:
					# Issue HEAD request to get LDP resource type from URI proper, not /fcr:metadata
					head_response = self.api.http_request('HEAD', uri)
					resource_type = self.api.parse_resource_type(head_response)

			logger.debug('using resource type: %s' % resource_type)

			# return resource
			return resource_type(self,
				uri,
				response=get_response)

		else:
			raise Exception('HTTP %s, error retrieving resource uri %s' % (get_response.status_code, uri))