Refactor the facade to dynamically call methods

This means we don't need to keep updating the facade when we add new methods (we forgot to update some of the definitions alleady, so some of the functions that were manually written here we already outdated).