functional allocation