fixing a bug
some refactoring into abstract classes