simplified for 1 interface, tweaks