finally fix the bug in internal force! TODO: better design and more elegant implemention