ratings complete and moderately tested (with js)