client side cleaned up