Refactored all classes, now there are different Interfaces so there are not methods without implementation