add some comments to understand the flow of RM3