correcting cloning methods to specification
also adds safeClone to suppress that dumb exception that really should just be a runtime exception...