In general, try not to create classes that are overcomplicated. Implementing several interfaces will bring lots of public functions; the delegate methods will mean lots of code (even though generated). Check whether you can simplify the design, whether there's no way to avoid this class taking on so much functionality/responsibility.