fleshing out the interface