added reserve function