forward functions changed but has bug