refactored some classes with the new TWritableComponent class