add gp3 feature and new getNormal logic