IMO this needs further refactoring - respect separation of concerns: it's not AbstractProject's call to trigger a node offline