added initialize and clone