Major refactor into more modular packages. Now uses Gomega matchers