implement webapp'ish behaviour