Hi I split this patch into two, 0001-** is about renaming and abstracting to function pointers, 0002-** is for refactoring code. Thanks Annie