fixed a bug with back pointer