implemented a driver class and sub components