add recommender system implementation and fix update