I was able to get rid of `BaseNetwork`, but I haven't figured a good way to address this. I understand the intent of that message, but I don't think it's a reason to never allow users to subclass our stuff. I think it's a reason to be aware of what problems can occur and to guard against them, though. The way I am guarding against those problems here is by making `initialize` and `make` have empty implementations in `Network`, and directing the user to _only_ implement these two methods. They should not or need not override any other methods, and so the methods implemented by the base class are mutually exclusive from the methods implemented by the subclass, making such problems less of an issue. This is the same approach used by Tornado, and I like it from both the developer side and the user side. Other approaches I can think of right now are more obtrusive to both sides.