refactor to provide interface for VM management (#92)
move factory and interfaces into separate namespace (#92)
move factory and interfaces into separate namespace (#92)
rename base classes as they are not really pure interfaces (#92)