almost working, check and tighten up indexJ, dropJ, takeJ