refactor teach package structure