Restructure and added event sourcing