pls make this a bit more polymorphic. istyping src is terrible and you know it.