first stab at ads

Do not merge yet,
For review only now
Honestly, this whole module should be more OOP. Right now it's a mix between functional and procedural. Refactor as a class with class properties, methods and if it needs to be singleton returning factory, then do that from within the class :)