with primitive web frontend