refact *: Use Rc<RefCell<>>