refactored unchanged code to base driver
added new concrete driver