design patterns in java revisited in fpa