Redoing the API

As the previos api idea was pretty bad and done in hurry here is the one done on a lot of coffee

Hopefully this idea will hold more water then the previous one.