main classes changed to be not abstract