(#1875) - use a library for extend, and then use clone for the 95% of the time where that is what we are using extend for
(#1878) - pull md5 out and just use a module