more classes for backend algorithm