client side improvements, need work on backend