internal prototypes