got rid of old methods, added some explanatory comments for predicates, also,  beautify the overall implementation