added internal classes