factored generic methods into util
renamed ik to be specific to it's implementation