add cubic procedure
add double procedure
add compose procedure
add repeated procedure