fix private/public
make default val and descript optional