should each class implement this and we can avoid the icky isinstance()