argument
return value
state
diamond
input