smarter way updating metadata