use custom class instead of plain string as constraint tree node
[implementation] select tree node, apply constraints
[implementation] add user custom constraints