Remade abstract classes to use abstract functions.