Starting refactor, some specs passing