more universal functions