maint: split run() to separate methods per operation