STI for Host

This branch is a refactoring of @GregSutcliffe 's branch #415