fix implementation