Changes to the knowledge system

I added some new features to the constructors for simplicity. We're
still just working on the API.