constraint functionality added