Version2

Code refactoring with tagging functionality, but tagging is not perfect and robust now.