written in NJUPT