moving some stuff around
moved some stuff around, impl func spec