switched to delegation model