added metadata abstraction

(was previously in archimedesJ project)