Update new metadata interface to use generics and add a new method
Minor tweaks
Added clone to metadata type and made other metadata interfaces extend
it