Some refactoring and additional tests
Add user following