Structure changes
- introduce templates
- update requirements