maybe a simple loose MVC or MVP lib feature ...