Now slighlty functional, add the clone method to do all the hard work, for now