no longer requires delegate