refactored: extract vm info collection classes