redone with class