espero toda la funcionalidad requerida, diagrama completo 
v1