essentially working, needs a couple tweeks