modify to implement package structure