implement clienside views (finally)