can handle overloaded apply methods