Lots of changes, nearly functional