basically finished except for spinner