add new modules and do many minor changes.