abstracted metadata defaults out of class and into dictionary