More proper protocol implementation.