code assumptions