added first not tested or runned draft of abstract method caller