* Modified library name, made abstract base class, made derived classes