User settings refactor, closes #7