implemented very basic client side