Make some changes for better documentation and modulation