implement metadata generator