updated force function