fix function bugs