use IntArrayList and FloatArrayList instead of ArrayBuffer
remove all ArrayBuffer usage
prevent ratings being caculated twice