added virtual Run method
implemented ReadInput