implemented gui