add is_a and interface
update
add core