スプライトを管理するクラスが作れません。C++ です。

今は、各々のキャラクタのクラスがサーフェスやアニメーションの情報も持っていて、
なんとなく不細工な感じがするので、見た目の情報を切り分ける事にしたんですが、
それを一元管理するクラスの設計が出来ません。

今動いてる物をいじるんだから、それなりに便利にしようと思い、
確保したサーフェスやアニメーションの情報や、今表示中のスプライトの情報を、
管理クラスの寿命と共に廃棄できるようにしようとしたり、
サーフェスやアニメーションの情報を削除しても、それをまだ使用してるスプライトがあったら、
そのスプライトが削除される時までは、保持されるような物を作ろうとしました。

けれど、実装してもうまくいかないし、
整理しようと紙に書いていても、頭が混乱してきました。

みなさんは、こんな場合にはどう設計されていましたか?