follow delegate conventions. removed usage of ivars