with function skeletons