reorganized functionality