extract functions into row subclasses