added some cool features like reproducing