stock move
most stuff around
add higher order functions