interface and setup - partial code