requires metadata