Sketch out shardable, use for sharded() comm strategy.
Use Map* for creation function mapping; (yay C++ static initialization rules)
Use boost::shared_ptrs for book-keeping.