added protocol definition for construct