update : interface is more simple now