added better chaining constraints