nearly finished but still buggy