basics working, not pretty, slow, inefficient