need to introduce util.clone