update to function interface