will want to require libraries here in the base class, eventually, rather than in subclasses