better desc and extractData function