refactor base package and add boilerplate code.