reorder interface
update interface
add tests