add commentary
check type parameters