change ICallback to be able to use generics.