Fix bugs, and add tests

You can't miss tests even if you were planning create a very simple task at the beginning.
Improve tips
Improve final output
Refactoring
Add a local sbt file
Now we can run it by: ./sbt run
Improve output
Add README