refactored webnotes.webutils