Hi Dhinta: here are examples for Persephone: Example 1: Class dictionary: A = B C. B = D. D = Z. C = Z. class A{ Z get_short_Z() {shortest A -> Z} } This gets translated into: class A{ Z get_short_Z() { return this.get_c().get_z();} } Example 2: A = B C. B = D. D = Z. C = Z.// we have a functional edge with one argument class A{ Z get_short_Z(Q q) {shortest A -> Z} } This gets translated into: class A{ Z get_short_Z(Q q) { return this.get_c().f(q);} } Example 3: A = B C. B = D. D = Z.// we have a functional edge with two arguments C = Z.// we have a functional edge with one argument class A{ Z get_Z() {shortest A:a1 -> B:b1 -> Z} } This gets translated into: class A{ Z get_Z() { A a1 = this; B b1 = this.get_b(); return b1.get_d().g(b1,a1);} For the implementation you use an extended class dictionary for class dictionaries from hw1 ore hw2 and a class dictionary for expressions like: {shortest A:a1 -> B:b1 -> Z} and as output you generate a Java method. Does this help? Sorry for the delayed response. -- Karl