add row polymorphism (hopefully)