implementing isBlocking methods mainly

also making things use pointers, because, you know, inheritance.