Updated with changes in features and better performance