added self::open() in regenerate_id()