Reviews added and some refactoring