some refactor based on comments
some refactor based on comments
some refactor based on comments