abstract logic into said controllers