Added searching by type.  More factory methods to avoid leaking this from constructors.