Closes #451 and refactors a bit
Merge branch 'master' of https://github.com/uonline/uonline