added protocol prototype