less broken now, but a little incomplete