Updated so that apply will at compile time, decide to dereference any argument with a dereference operator when calling. Also started writing the compile time selection of callback to use