following separation of concern philosophy, we should extract the core processing logic such as payment validation or transaction recording into a separate rust modules, or at least dedicated structs, ...