fork join refactored