more proper Interfaces names
adding contraint API
improving constraint api