Almost done

TODO: Test