massive changes, but currently working