this function should live in the same file as the interface that is calling it