why have function run, and not just use self::migrate() ?