rewrite almost works
small bugs
MAJOR CHANGES