Feature/refine class definitions

I changed a couple of thins in the way the code was being implemented as well as adding unit tests for each class definition. I think with this we will be able to make modifications with more confidence. I didn't change the API though at this point.
Not sure about this top level directory structure for the specs as I started using ```integration``` in the other name I was expecting to use ```unit``` for this one. What do you think @TheNaoX