add core interface, and node implemetation