add core func