Ex 3/3/a: implemented
Ex 3/3/b+c: implemented
Ex 3/3/d: implemented