Added Layer abstract base class
Merged master