Proper return value handling, also fixed sub/add