added explicit restrict