using callafter instead of locking makes things better