30c4a419503efbe134cc87d7aee730c1ec3c7e9b revered to
base classes edited to be more inclusive