Ernst oop etc layers

Situation
-----------
Layers were having a lot of if else ladders.

Problem
----------
We did not have a layer class that could operate as a *interface* between different layer types.

Action
--------
- [ ] Create abstract layer class
- [ ] Create specific layer type classes that implement these classes