merge all the sub-functionality into a common script