First draft

Then we should refactor this in lots of providers