trying to make virtual methods context sensitive