I just wonder why a choice has been made to just create a single TWPFAction with some hard-to-remember ID number that defines which action will be executed. Wouldn't it be easier to define one TWPFBaseAction class and then create all other actions as inherited actions from this base class? That way, it would be a lot easier to have an overview of all those actions.
Or maybe just replace the ID of integer type with an ID of some enumeration type. I just don't understand why it had to be solved in such a complex way...