working on single-threading everything