mostly working

needs more testing