better prototype cloning