please break these separate classes into separate files