abstracted metadata parsing to its own package

doesn't work yet, but interface and stubs/structure seem to work