Separated tests, refactored packages, start of visitor pattern