moving tag and repo into more object kind of manner, so it runs faster and is more flexible
new version