document the interface