implemented useOn, made commutative

still need to override useOn method for items that have it