2017 retail sales the best in three years