updated with more func tests