add fromHLists, and a possible way to do cmap