enhance dataBinder to support nested structure and add some tests