declare templates with private scopes in controllers
Use private fields + getter/setter for controllers attributes
Use an abstract class. Mustn't be used directly
VCS model (draft - not ended)