diff --git a/Lectures/L27_SpecViaUML/DataSetInterface/bin/experiment b/Lectures/L27_SpecViaUML/DataSetInterface/bin/experiment
index 0c43baf47bd779116b67b8d70b9304773e5e2853..e1e8c00d74884768128abb8a40ccd58f9e5e95ba 100755
Binary files a/Lectures/L27_SpecViaUML/DataSetInterface/bin/experiment and b/Lectures/L27_SpecViaUML/DataSetInterface/bin/experiment differ
diff --git a/Lectures/L27_SpecViaUML/DataSetInterface/experimentation/main.cpp b/Lectures/L27_SpecViaUML/DataSetInterface/experimentation/main.cpp
index 324358ba4bfa32866dd855648adf06e63df855ba..362986cb668629a69d411c318f794a4c2ed69402 100644
--- a/Lectures/L27_SpecViaUML/DataSetInterface/experimentation/main.cpp
+++ b/Lectures/L27_SpecViaUML/DataSetInterface/experimentation/main.cpp
@@ -1,4 +1,5 @@
 #include "PointT.h"
+#include "BankAccount.h"
 #include "DataSetInterface.h"
 
 #include <iostream>
@@ -7,12 +8,13 @@ using namespace std;
 int main()
 {
 
-  DataSetInterface ds;
+  //Test Data Set Inteface with PointT
   PointT p1(0.0, 0.0);
   PointT p2(3.0, 4.0);
   PointT p3(7.0, 24.0);
   PointT p4(5.0, 12.0);
-  
+
+  DataSetInterface ds;
   ds.add(&p1);
   ds.add(&p2);
   ds.add(&p3);
@@ -20,13 +22,30 @@ int main()
   
   cout << "average = " << ds.getAverage() << "\n";
 
-  Measurable* maxM = ds.getMaximum();
+  Measurable *maxM = ds.getMaximum();
 
-  PointT* maxP = (PointT*) maxM;
+  PointT *maxP = (PointT*) maxM;
+
+  cout << "maximum = " << *maxP << "\n";
+
+  //Test Data Set Inteface with Bank Account
+
+  BankAccount b1;
+  b1.deposit(300);
+  BankAccount b2;
+  b2.deposit(100);
+
+  DataSetInterface dsBank;
+  dsBank.add(&b1);
+  dsBank.add(&b2);
+    
+  cout << "average = " << dsBank.getAverage() << "\n";
+
+  maxM = dsBank.getMaximum();
+
+  BankAccount *maxB = (BankAccount*) maxM;
+
+  cout << "maximum = " << *maxB << "\n";
 
-  //maxP = dynamic_cast<PointT*>(maxM);
-  
-  cout << "maximum = " << maxP << "\n";
-  
   return 0;
 }
diff --git a/Lectures/L27_SpecViaUML/DataSetInterface/include/BankAccount.h b/Lectures/L27_SpecViaUML/DataSetInterface/include/BankAccount.h
new file mode 100644
index 0000000000000000000000000000000000000000..70a52a482779aa306f125a7d8132faabbfdf8fb1
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetInterface/include/BankAccount.h
@@ -0,0 +1,24 @@
+#ifndef BANKACCOUNT_H
+#define BANKACCOUNT_H
+
+#include "Measurable.h"
+
+#include <iostream>
+
+class BankAccount : public Measurable 
+{
+  public:
+    BankAccount();
+    void deposit(double amount);
+    void withdraw(double amount);
+    double getBalance();
+
+    friend std::ostream& operator<< (std::ostream &out, const BankAccount &ba);
+
+    double getMeasure();
+    
+  private: 
+    double balance;
+};
+
+#endif
diff --git a/Lectures/L27_SpecViaUML/DataSetInterface/include/DataSetInterface.h b/Lectures/L27_SpecViaUML/DataSetInterface/include/DataSetInterface.h
index 5e23bca56e907e33d18b0d3a960176741fed9051..ae93b2308f729be1ab4bfd1ee4ba900aa37fe1fb 100644
--- a/Lectures/L27_SpecViaUML/DataSetInterface/include/DataSetInterface.h
+++ b/Lectures/L27_SpecViaUML/DataSetInterface/include/DataSetInterface.h
@@ -7,14 +7,14 @@ class DataSetInterface
 {
   private:
     double sum;
-    Measurable* maximum;
+    Measurable *maximum;
     int count;
 
   public:
     DataSetInterface();
-    void add(Measurable* x);
+    void add(Measurable *x);
     double getAverage();
-    Measurable* getMaximum();
+    Measurable *getMaximum();
 };
 
 #endif
diff --git a/Lectures/L27_SpecViaUML/DataSetInterface/src/BankAccount.cpp b/Lectures/L27_SpecViaUML/DataSetInterface/src/BankAccount.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2abe22d20604df3233bde6a7c4cb606104e5ab69
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetInterface/src/BankAccount.cpp
@@ -0,0 +1,34 @@
+#include "BankAccount.h"
+
+BankAccount::BankAccount()
+{
+  this->balance = 0.0;
+}
+
+void BankAccount::deposit(double amount)
+{
+  this->balance += amount;
+}
+
+void BankAccount::withdraw(double amount)
+{
+  this->balance -= amount;
+}
+
+double BankAccount::getBalance()
+{
+  return balance;
+}
+
+double BankAccount::getMeasure()
+{
+  return balance;
+}
+
+std::ostream& operator<< (std::ostream &out, const BankAccount &ba)
+{
+  //From http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/
+  out << "BankAccount(" << ba.balance << ") ";
+ 
+  return out;
+}
diff --git a/Lectures/L27_SpecViaUML/DataSetInterface/src/DataSetInterface.cpp b/Lectures/L27_SpecViaUML/DataSetInterface/src/DataSetInterface.cpp
index d52db9d853dd6a9b5ba1b909d3dde5e182dcb8fc..83204b04c836f9141f78ca1b44ee43e53bc25b4e 100644
--- a/Lectures/L27_SpecViaUML/DataSetInterface/src/DataSetInterface.cpp
+++ b/Lectures/L27_SpecViaUML/DataSetInterface/src/DataSetInterface.cpp
@@ -7,7 +7,7 @@ DataSetInterface::DataSetInterface() : maximum()
   this->count = 0;
 }
 
-void DataSetInterface::add(Measurable* x)
+void DataSetInterface::add(Measurable *x)
 {
    this->sum += x->getMeasure();
    if (count == 0 || maximum->getMeasure() < x->getMeasure()) maximum = x;
@@ -20,7 +20,7 @@ double DataSetInterface::getAverage()
      else return sum/count;
 }
 
-Measurable* DataSetInterface::getMaximum()
+Measurable *DataSetInterface::getMaximum()
 {
    return maximum;
 }
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/Makefile b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..d2c5aca0dd4a53631812d8d1109cd0107104b023
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/Makefile
@@ -0,0 +1,53 @@
+SRC_DIRS := src
+C_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.c))
+CXX_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.cpp))
+C_OBJS := ${C_SRCS:.c=.o}
+CXX_OBJS := ${CXX_SRCS:.cpp=.o}
+OBJS := $(C_OBJS) $(CXX_OBJS)
+INCLUDE_DIRS := include
+LIBRARY_DIRS :=
+LIBRARIES :=
+
+prog_NAME := experiment
+prog_DIR := bin
+prog_FULL := $(prog_DIR)/$(prog_NAME)
+prog_SRC_DIRS := experimentation
+prog_C_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.c))
+prog_CXX_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.cpp))
+prog_C_OBJS := ${prog_C_SRCS:.c=.o}
+prog_CXX_OBJS := ${prog_CXX_SRCS:.cpp=.o}
+prog_OBJS := $(prog_C_OBJS) $(prog_CXX_OBJS)
+prog_INCLUDE_DIRS :=
+prog_LIBRARY_DIRS :=
+prog_LIBRARIES :=
+
+all_OBJS := $(OBJS) $(prog_OBJS) $(test_OBJS)
+DEP := $(all_OBJS:%.o=%.d)
+
+CXXFLAGS += -std=c++11
+CXXFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
+LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir))
+LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library))
+
+.PHONY: experiment src clean
+
+experiment: CXXFLAGS += $(foreach includedir,$(prog_INCLUDE_DIRS),-I$(includedir))
+experiment: LDFLAGS += $(foreach librarydir,$(prog_LIBRARY_DIRS),-L$(librarydir))
+experiment: LDFLAGS += $(foreach library,$(prog_LIBRARIES),-l$(library)) 
+
+experiment: $(prog_FULL)
+	./$(prog_FULL)
+  
+$(prog_FULL): $(prog_OBJS) $(OBJS)
+	$(LINK.cc) $^ -o $@
+
+-include $(DEP)
+
+%.o: %.cpp
+	$(CXX) $(CXXFLAGS) -MMD -c $< -o $@
+  
+clean:
+	@- $(RM) $(prog_FULL)
+	@- $(RM) $(prog_OBJS)
+	@- $(RM) $(OBJS)
+	@- $(RM) $(DEP)
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/bin/.gitkeep b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/bin/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/bin/experiment b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/bin/experiment
new file mode 100755
index 0000000000000000000000000000000000000000..6d4c70fa59ee5d0634c23861f7c618e64f8cd435
Binary files /dev/null and b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/bin/experiment differ
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/experimentation/main.cpp b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/experimentation/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..de0e6cf8e696e6599e44b257fc1171b580e2cd0a
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/experimentation/main.cpp
@@ -0,0 +1,31 @@
+#include "PointMT.h"
+#include "DataSetInterface.h"
+
+#include <iostream>
+using namespace std;
+
+int main()
+{
+
+  //Test Data Set Inteface with PointT
+  PointMT p1(0.0, 0.0);
+  PointMT p2(3.0, 4.0);
+  PointMT p3(7.0, 24.0);
+  PointMT p4(5.0, 12.0);
+
+  DataSetInterface ds;
+  ds.add(&p1);
+  ds.add(&p2);
+  ds.add(&p3);
+  ds.add(&p4);
+  
+  cout << "average = " << ds.getAverage() << "\n";
+
+  Measurable *maxM = ds.getMaximum();
+
+  PointMT *maxP = (PointMT*) maxM;
+
+  cout << "maximum = " << *maxP << "\n";
+  
+  return 0;
+}
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/DataSetInterface.h b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/DataSetInterface.h
new file mode 100644
index 0000000000000000000000000000000000000000..ae93b2308f729be1ab4bfd1ee4ba900aa37fe1fb
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/DataSetInterface.h
@@ -0,0 +1,20 @@
+#ifndef DATASETINTERFACE_H
+#define DATASETINTERFACE_H
+
+#include "Measurable.h"
+
+class DataSetInterface
+{
+  private:
+    double sum;
+    Measurable *maximum;
+    int count;
+
+  public:
+    DataSetInterface();
+    void add(Measurable *x);
+    double getAverage();
+    Measurable *getMaximum();
+};
+
+#endif
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/Measurable.h b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/Measurable.h
new file mode 100644
index 0000000000000000000000000000000000000000..16c20c1a00f08018823afa2f7e31d86f7cd168cf
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/Measurable.h
@@ -0,0 +1,10 @@
+#ifndef MEASURABLE_H
+#define MEASURABLE_H
+
+class Measurable
+{
+  public:
+  virtual double getMeasure() = 0;
+};
+
+#endif
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/PointMT.h b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/PointMT.h
new file mode 100644
index 0000000000000000000000000000000000000000..c8c28f14ebfd71a684632969396aa4305bf6aa17
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/PointMT.h
@@ -0,0 +1,14 @@
+#ifndef POINTMT_H
+#define POINTMT_H
+
+#include "PointT.h"
+#include "Measurable.h"
+
+class PointMT : public PointT, public Measurable
+{
+  public:
+    PointMT(double x, double y);
+    double getMeasure();
+};
+
+#endif
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/PointT.h b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/PointT.h
new file mode 100644
index 0000000000000000000000000000000000000000..ce3f800ecd4af22fe4c37714023a797d48500acd
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/include/PointT.h
@@ -0,0 +1,21 @@
+#ifndef POINTT_H
+#define POINTT_H
+
+#include <iostream>
+
+class PointT 
+{
+  public:
+    PointT(double x, double y);
+    double xcoord();
+    double ycoord();
+    double distToOrigin();
+
+    friend std::ostream& operator<< (std::ostream &out, const PointT &point);
+    
+  private: 
+    double xc;
+    double yc;
+};
+
+#endif
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/DataSetInterface.cpp b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/DataSetInterface.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..83204b04c836f9141f78ca1b44ee43e53bc25b4e
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/DataSetInterface.cpp
@@ -0,0 +1,26 @@
+#include "DataSetInterface.h"
+#include "Measurable.h"
+
+DataSetInterface::DataSetInterface() : maximum()
+{
+  this->sum = 0.0;
+  this->count = 0;
+}
+
+void DataSetInterface::add(Measurable *x)
+{
+   this->sum += x->getMeasure();
+   if (count == 0 || maximum->getMeasure() < x->getMeasure()) maximum = x;
+   count++;
+}
+
+double DataSetInterface::getAverage()
+{
+   if (count == 0) return 0;
+     else return sum/count;
+}
+
+Measurable *DataSetInterface::getMaximum()
+{
+   return maximum;
+}
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/PointMT.cpp b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/PointMT.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..efc60b99b498ff7e05225b6d5819b6542c7bc56a
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/PointMT.cpp
@@ -0,0 +1,11 @@
+#include "PointMT.h"
+#include "Measurable.h"
+
+PointMT::PointMT(double x, double y) : PointT(x, y)
+{
+}
+
+double PointMT::getMeasure()
+{
+  return this->distToOrigin();
+}
diff --git a/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/PointT.cpp b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/PointT.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3f1d5014514b00c70bbffe4c957e03fa9eb3ef62
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetMultipleInheritance/src/PointT.cpp
@@ -0,0 +1,38 @@
+#include "PointT.h"
+#include <cmath>
+
+PointT::PointT(double x, double y)
+{
+  this->xc = x;
+  this->yc = y;
+}
+
+double PointT::xcoord()
+{
+  return this->xc;
+}
+
+double PointT::ycoord()
+{
+  return this->yc;
+}
+
+double PointT::distToOrigin()
+{
+  double dx;
+  double dy;
+
+  dx = this->xc;
+  dy = this->yc;
+
+  return sqrt(pow(dx,2.0) + pow(dy,2.0));
+}
+
+std::ostream& operator<< (std::ostream &out, const PointT& point)
+{
+  //From http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/
+  // Since operator<< is a friend of the Point class, we can access Point's members directly.
+  out << "PointT(" << point.xc << ", " << point.yc << ")";
+ 
+  return out;
+}
diff --git a/Lectures/L27_SpecViaUML/DataSetsAggregation.pdf b/Lectures/L27_SpecViaUML/DataSetsAggregation.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ed80247d83342071c054fdf831d2926ed83d3585
Binary files /dev/null and b/Lectures/L27_SpecViaUML/DataSetsAggregation.pdf differ
diff --git a/Lectures/L27_SpecViaUML/DataSetsAggregation.xml b/Lectures/L27_SpecViaUML/DataSetsAggregation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f91e3926ef0881cc883ec5224a7b9bfcbef09b55
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/DataSetsAggregation.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" version="8.4.6" editor="www.draw.io" type="device"><diagram id="51d45c3b-694b-ad9c-a1ca-de0ff4b50e78" name="Page-1">1VZdb8IgFP01fV3aslZ99HN7WbJEk7lHVq4tsS0GUdv9+lGhtohdzDJd5oPhHuDAOZdjdNA4K5443iQvjEDq+C4pHDRxfD8YhPK7AkoFoIGvgJhToiCvAeb0EzToanRHCWyNhYKxVNCNCUYszyESBoY5Zwdz2Yql5qkbHIMFzCOc2ugbJSJRaD9wG/wZaJzUJ3uunvnA0TrmbJfr8xwfrY4fNZ3hmkuv3yaYsEMLQlMHjTljQo2yYgxpZW1tm9o365g93ZtDLq7ZoNuyx+lOS59ggecgXhmVDOqOoqx9SUSWypHnoJHeCFxA0Xm4d5IkXwqwDAQv5ZLC7HZplofGca/GkpbbdRewbnJ8Im6EyoHWelk3snQfBS9urNh3/07yoyXZEgs5GVbpkRWhOGM5WSQ0l9LlxIxWzBNXVTqykhSNWhZJG3i5bBfv1Z6HoCoLKpY1gxw3M+oeQKxMntkq78p2PAKjhQLzGETrNdvmt90NtZMcUizo3jzxkr2aTueh4+n2z/qj7tlkaNZF0/ueR4mzeI6tPgm8qvtBV9BHOF8Po7tn/Z4vP7S0K9GR/J2+tW4r8fcU3vtvkW/nO7TzHVzt/u0j7/1W5i2iH4dels0/B7W8+XeGpl8=</diagram></mxfile>
\ No newline at end of file
diff --git a/Lectures/L27_SpecViaUML/MeasurableInterface.pdf b/Lectures/L27_SpecViaUML/MeasurableInterface.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c59665831ba138e22f2922cb4862e65f424fd183
Binary files /dev/null and b/Lectures/L27_SpecViaUML/MeasurableInterface.pdf differ
diff --git a/Lectures/L27_SpecViaUML/MeasurableInterface.xml b/Lectures/L27_SpecViaUML/MeasurableInterface.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb2f1155fbd26c568079747d74e7207c81fea151
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/MeasurableInterface.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" version="8.4.6" editor="www.draw.io" type="device"><diagram id="375c196d-1333-2840-e13d-7bbed8fb0d51" name="Page-1">3VbLbqMwFP0atiPAIWqWTdLHplKlVJp26eAbsAI4MiaP+fox2AaMSScaDYo0WUT28fXjnHuujYdW+fmF40P6xghkXuiTs4fWXhhGi7n8r4GLAtA8VEDCKVFQ0AEb+gs06Gu0ogRKK1Awlgl6sMGYFQXEwsIw5+xkh+1YZu96wAk4wCbGmYv+pESkCn2I/A5/BZqkZufA1yNbHO8TzqpC7+eFaNf81HCOzVo6vkwxYacehJ48tOKMCdXKzyvIammNbGre85XR9twcCnHLBJ2WI84qTX2NBd6A0McTFyNJKvJMtgIPLd1N9L5H4ALOPUhv+gIsB8EvMkSPzjT/1h+6f+rUDowZ0p7SJgNYJzhpV+5IyobmOc4ZOZy9cI7zg2SWiYZev0cLAXyHY2jhxAoyvSZ4y2WrQd4AlxXHWynftEreJGU4kZQzR8p3JgX7mJgzCmzOs4cRzv5EnCOH8xIX+8c4llU/ddkEizsSX4zUzYAtFOSxvn5lj1Ccs4J8pLSQ3OXAM61XXvuqp+986SC07GkEZyo+TZRsf9XtH1EzRx7304TVnW7sqrIlq3gMVtkLzBMQ1u0HxHoNXPX76pry4pBhQY/2gzEmr16uKYxe2aJB2S4GGVJH17P6N/hgoaElomGqFWFnoSbbLcebDBC45f6dA7YZi/cyOwSXKZA2c+NGCMIrRlDJN1boG6Hniy+rxAb5/KMzItcZ6G5GmA3zd6sR0PBumNAI7h34XxhhdlcjRIP8/e2N4LyO4b8ygux2n6YqvPv8R0+/AQ==</diagram></mxfile>
\ No newline at end of file
diff --git a/Lectures/L27_SpecViaUML/MeasurableInterfaceInheritance.pdf b/Lectures/L27_SpecViaUML/MeasurableInterfaceInheritance.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2056af399a59ee51edcb762a067c7ad744d232de
Binary files /dev/null and b/Lectures/L27_SpecViaUML/MeasurableInterfaceInheritance.pdf differ
diff --git a/Lectures/L27_SpecViaUML/MeasurableInterfaceInheritance.xml b/Lectures/L27_SpecViaUML/MeasurableInterfaceInheritance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e73ededf5d30385b0b29858bfe341b3b2ecbcd28
--- /dev/null
+++ b/Lectures/L27_SpecViaUML/MeasurableInterfaceInheritance.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0" version="8.4.6" editor="www.draw.io" type="device"><diagram id="375c196d-1333-2840-e13d-7bbed8fb0d51" name="Page-1">3VfLbqMwFP0atiPAgTbLpmk7m0gjpdK0SwffgBXAkeO85uvHYPMwJg2KhkaaLCL7+NrmnHuuDQ56zk5vHG+TBSOQOr5LTg6aO74fTEP5XwBnBaDQV0DMKVGQ1wBL+gc06Gp0TwnsjEDBWCro1gQjlucQCQPDnLOjGbZmqbnrFsdgAcsIpzb6mxKRKPQxcBv8J9A4qXb2XD2ywtEm5myf6/0cH63LnxrOcLWWjt8lmLBjC0IvDnrmjAnVyk7PkBbSVrKpea8XRuvn5pCLIRN0Wg443WvqcyzwEoR+PHGuJElElsqW56CZvYne9wBcwKkF6U3fgGUg+FmG6NGJ5l/7Q/ePjdpeZYakpXSVAawTHNcrNyRlQ/Ps54wszo4f4mwrmaWipNfu0VwAX+MIajg2gqpeGbzislUiC8C7PccrKd+4Sg6S0h9Jyokl5S8mBVu8j0waeSbpyWMPaXck0oFFeobzzVMUybIfu2686R2JT3sKp8MWcvJUnL+yRyjOWE7eE5pL7nLglRYrz13V04e+tBCatTSCExUfVZRsfxbtH0E5Rz7uRxVWdJqxi8ru2J5HYNS9wDwGYRx/QIzrwFa/rW5VXxxSLOjBvDH65NXLlZXRqlvUqdtpJ0Pq0fWs9hHeWahriaCbakXYWqjMds1xkAE8u96/csAqZdFGZofgXQKkzly/ETz/ghFU8isrtI3Q8sWnUWKdfF51RmA7A93NCJNu/oYaAXXPhhGNYJ+B/4URJnc1QtDJ360ngnU7+uMZIbSMUC474AXAuvR6sjP4BSB4+MZ70Hu4yf0ti4eW/68a3vvC8O6/NLxK6bc4vvPqGk5uNLzvXlnoZsPLbvMxpsKbD1708hc=</diagram></mxfile>
\ No newline at end of file
diff --git a/Lectures/L27_SpecViaUML/src/DataSetInterface.java b/Lectures/L27_SpecViaUML/src/DataSetInterface.java
index dcc8738027c62331b44e18584912c22be1db8e29..7f0a3895fd34f93d326ebbb557d9a90bf610e419 100644
--- a/Lectures/L27_SpecViaUML/src/DataSetInterface.java
+++ b/Lectures/L27_SpecViaUML/src/DataSetInterface.java
@@ -1,7 +1,7 @@
 public class DataSetInterface
 {
    private double sum;
-   private Measurable maximum;
+   private Measurable* maximum;
    private int count;
 
    public DataSetInterface()
@@ -23,4 +23,4 @@ public class DataSetInterface
    public Measurable getMaximum()
    { return maximum;
    }
-}
\ No newline at end of file
+}