+ preference linked, refactored the code part 1