Why Function Pointers are Awesome