classes renamed for better understanding