Fix incorrect condition expression of for-loop in BodyNode::init()
1. Make some protected functions of BodyNode to public
2. Make some functions of Skeleton to virtual function