Just a prototype, still looking for the best POO practices and DPatterns