whoelse implementation