add core functions