Add authentication
Add cucumber and do some refactors