Why do I need to repeat type declarations between interfaces and implementations (or how do I get around this)?

See also