try proxy pattern, distribute class responsibility.