exposed functions