fleshing out more complete API