gui part done sufficiently