add arr function
multimethods
function tests
dispatch via protocol first
add refers