back to function pointers but with a slightly different structure this time.