updated Main()