refer to prototype