re-organized package for easier maintaining