Adapter split into three, collect and construct added