main part conpleted