Initial complete version. Starting testing.