Still missing features. Almost done.