Refactored in seperate libraries to make distinction clearer.

Seperate Libraries will be easier to test. Furthermore it makes depencies clearer and encourages (enforces) not to create unnecessary dependencies between unrelated layers.