<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_callback_function(setting_name, default=None):
 	""" 	Resolve a callback function based on a setting name. 	If the setting value isn't set, default is returned. If the setting value 	is already a callable function, that value is used - If the setting value 	is a string, an attempt is made to import it. Anything else will result in 	a failed import causing ImportError to be raised. 	:param setting_name: The name of the setting to resolve a callback from. 	:type setting_name: string (``str``/``unicode``) 	:param default: The default to return if setting isn't populated. 	:type default: ``bool`` 	:returns: The resolved callback function (if any). 	:type: ``callable`` 	"""

	func = getattr(settings, setting_name, None)
	if not func:
		return default

	if callable(func):
		return func

	if isinstance(func, str):
		func = import_string(func)

	if not callable(func):
		raise ImproperlyConfigured("{name} must be callable.".format(name=setting_name))

	return func