updated docs, some parameter things around defaults, and updated the factory so that it can accept more possibilities for kinds