+/- implemented, refactoring.