add mainfunction