started restructuring: use RatedObject + signals instead of subclassing