clean up, better check function look