add DesktopBuilder, LaptopBuilder (polymorphic builder pattern)