Revert "Generic entities are starting to seem like a bad idea."

This reverts commit 63b8b4d9aa96cd9fdb31f09b8746b858cae3a997.
Reversing commit of generic entity -- they didn't work very well
Reversing initial support for generic entity