Refactor of this classes. It doesnt test.