moved function interface into a separate file