Divided the class into virtual and implementation.