refactor name and package structure