Using abstracts instead of Dynamic