almost finish ui interaction stuff