now i remember why those functions had three arguments.