Linting and Testing

Lots of linting, unit testing and acceptance test