User favorite and some refactoring