STOP following clean code and solid
QUIT polymorphisizing everything
OOP fucking shits.
you've been warned.