finish gui implementation