interface slightly modified to work easily