Download
(4 Kb)
Download
Updated: 10/30/23 04:11 AM
Pictures
File Info
Compatibility:
Endless Archive (9.2.5)
Updated:10/30/23 04:11 AM
Created:12/27/15 11:31 PM
Monthly downloads:98
Total downloads:8,709
Favorites:27
MD5:
9.2.5
Circonians MyStatus  Popular! (More than 5000 hits)
Version: 1.70
by: Baertram [More]
What does it do?
Adds an icon to the chat window to display your current status. You can also left click on the icon to change your current status.

Keybinds:
You can set a keybind to quickly toggle through the available statuses.
There are additional keybinds to quickly set a specified status (ONLINE, OFFLINE, AWAY, DND).
And you are able to use the following chat slash commands to change the status:
/on
/off
/afk
/dnd

With Chat Window Maximized:


With Chat Window Minimized (Hidden/Minibar)
Version 1.70 -- 2023-10-30
Updated API version for API101040
Made compatible with combobox changes


Version 1.60 -- 2022-05-09
Updated API version
Fixed TLC for PTS
Should workon live and PTS High Isle

Version 1.50 -- 2021-10-20
Raised API version
Removed dependency LibLoadedAddons

Version 1.49 --
Raised API version
Fixed ZO_Object stuff

Version 1.48 --


-Updated API
-Added player activated status check to hopefully fix a rare bug which may occure after login (showing online in the MyStatus dropdown box, but being offline in the game's status)
-Removed libraries. You need to install the following libraries as standalone version to let this addon work properly:
LibLoadedAddons

Version 1.47 --

Updated API and libraries
Version 1.46 --

Added chat slash commands:
/on
/off
/afk
/dnd

Version 1.45 --

API raised
Version 1.44 --

API raised
Version 1.43 --

API raised to Shadow of the Hist

Change status keybinds Added keybinds to swithc your current sttaus to ONLINE, OFFLINE, AWAY, DND.
Version 1.42 --

API raised to Dark Brotherhood

Change status keybinds Added keybinds to swithc your current sttaus to ONLINE, OFFLINE, AWAY, DND.
Version 1.4 --

Toggle Status Keybind Added a keybind to allow you to quickly toggle through the available statuses.
Version 1.3 --

pChat Compatability Adjustment For users using pChat sometimes the icon was getting hidden behind the chat window. I could not reproduce it, but I made some changes to the controls visibility level. If it happens again let me know & I'll attempt to adjust it some more.
Version 1.2 -- Added Request

Set Status From Icon Rewrote addon to allow the ability to set your current status from the displayed icon. Left click on icon to display status options, then select your desired status.
Version 1.1 --

Bug Fix Fixed a bug that would cause the status icon to be hidden from the minibar after a certain period of time when the chat window was minimized.
Archived Files (15)
File Name
Version
Size
Uploader
Date
1.60
4kB
Baertram
05/09/22 12:35 PM
1.50
4kB
Baertram
10/20/21 08:04 AM
1.49
4kB
Baertram
11/04/20 09:14 AM
1.48
4kB
Baertram
06/18/19 06:22 AM
1.47
6kB
Baertram
03/04/18 08:29 AM
1.46
6kB
Baertram
07/15/17 12:39 PM
1.45
6kB
Baertram
02/06/17 02:37 PM
1.44
6kB
Baertram
10/02/16 07:44 PM
1.43
6kB
Baertram
07/17/16 01:10 PM
1.42
6kB
Baertram
05/14/16 04:10 PM
1.4
5kB
circonian
02/28/16 09:32 PM
1.3
5kB
circonian
12/31/15 07:31 PM
1.2
5kB
circonian
12/29/15 08:15 PM
1.1
5kB
circonian
12/28/15 04:20 PM
1.0
5kB
12/27/15 11:31 PM


Post A Reply Comment Options
Unread 10/25/23, 03:35 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Thanks, seems the chat changed a bit on PTS and functions like HideMinBar and ShowMinBar are called earlier, before MyStatus was initialized.

Edit
And I bet you got these errors too:
Code:
/EsoUI/Libraries/ZO_ComboBox/ZO_ComboBox.lua:24: attempt to index a nil value
|rstack traceback:
/EsoUI/Libraries/ZO_ComboBox/ZO_ComboBox.lua:24: in function 'ZO_ComboBox:Initialize'
|caaaaaa<Locals> self = [table:1]{m_sortsItems = T, m_isDropdownVisible = F, horizontalAlignment = 0, m_sortOrder = T, m_spacing = 0, m_name = "My_Status_TLCStatus"}, control = ud </Locals>|r
/EsoUI/Libraries/Utility/BaseObject.lua:231: in function 'ZO_InitializingObject:New'
|caaaaaa<Locals> self = [table:2]{__isAbstractClass = F}, newObject = [table:1] </Locals>|r
My_Status_TLCStatus_Initialized:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud </Locals>|r
That's the real reason. ZO_ComboBox was changed and it fails to load properly on PTS now -> throwing errors and then throwing that error later that you found
Last edited by Baertram : 10/25/23 at 03:38 PM.
Report comment to moderator  
Reply With Quote
Unread 10/25/23, 11:43 AM  
Marazota
AddOn Author - Click to view AddOns

Forum posts: 257
File comments: 1513
Uploads: 2
error on the PTS


user:/AddOns/MyStatus/MyStatus.lua:115: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:115: in function 'CHAT_SYSTEM:ShowMinBar'
/EsoUI/Ingame/ChatSystem/Keyboard/KeyboardChatSystem.lua:506: in function 'ZO_ChatSystem:Minimize'
(tail call): ?
/EsoUI/Ingame/Scenes/IngameFragments.lua:510: in function 'ZO_MinimizeChatFragment:Show'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:163: in function 'ZO_SceneFragment:ShouldBeShown'
/EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:233: in function 'ZO_SceneFragment:Refresh'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:181: in function 'ZO_Scene:RefreshFragmentsHelper'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:189: in function 'ZO_Scene:RefreshFragments'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:158: in function 'ZO_Scene:SetState'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:207: in function 'ZO_SceneManager_Base:ShowScene'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:298: in function 'ZO_SceneManager_Leader:ShowScene'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:381: in function 'ZO_SceneManager_Leader:OnSceneStateHidden'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:281: in function 'ZO_SceneManager_Base:OnSceneStateChange'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:328: in function 'ZO_SceneManager_Leader:OnSceneStateChange'
/EsoUI/Ingame/Scenes/IngameSceneManager.lua:397: in function 'ZO_IngameSceneManager:OnSceneStateChange'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:152: in function 'ZO_Scene:SetState'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:284: in function 'ZO_Scene:OnTransitionComplete'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:279: in function 'ZO_SceneetermineIfTransitionIsComplete'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:191: in function 'ZO_Scene:RefreshFragments'
/EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:158: in function 'ZO_Scene:SetState'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:215: in function 'ZO_SceneManager_Base:HideScene'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:302: in function 'ZO_SceneManager_Leader:HideScene'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:261: in function 'ZO_SceneManager_Leader:Show'
/EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:231: in function 'ZO_SceneManager_Base:Toggle'
/EsoUI/Ingame/Scenes/IngameSceneManager.lua:624: in function 'ZO_IngameSceneManager:OnToggleGameMenuBinding'
/EsoUI/Ingame/Scenes/IngameSceneManager.lua:653: in function 'ZO_SceneManager_ToggleGameMenuBinding'
:1: in function '(main chunk)'
Report comment to moderator  
Reply With Quote
Unread 05/06/22, 02:06 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Thanks, I know. It's not the only one
Report comment to moderator  
Reply With Quote
Unread 05/06/22, 01:51 AM  
Marazota
AddOn Author - Click to view AddOns

Forum posts: 257
File comments: 1513
Uploads: 2
getting PTS error

getting PTS error

Code:
TopLevelControl My_Status_TLC cannot be parented to any control but GuiRoot.
Report comment to moderator  
Reply With Quote
Unread 03/01/22, 10:22 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Originally Posted by LoneStar2911
Any chance you can add a settings menu so we can move the icon on an X axis? I figured out how to do it in the MyStatus.xml, but an in-game menu would be ideal.

Edit: editing the xml file isn't permanent, unfortunately.
Not planned as extra menus need extra effort and updates.
You can change it in the lua files, at the SetAnchor lines here:
Lua Code:
  1. --=====================================================--
  2. --======= HOOK FUNCTIONS =========--
  3. --=====================================================--
  4. function myStatus:AnchorToMiniBar()
  5.     local control = self.control
  6.  
  7.     control:SetParent(CHAT_SYSTEM.minBar)
  8.     control:ClearAnchors()
  9.     control:SetAnchor(TOPLEFT, ZO_ChatWindowNumNotifications, BOTTOMLEFT, 0, 0)
  10. end
  11. function myStatus:AnchorToChatWindow()
  12.     local control = self.control
  13.  
  14.     control:SetParent(CHAT_SYSTEM.control)
  15.     control:ClearAnchors()
  16.     control:SetAnchor(LEFT, ZO_ChatWindowNumNotifications, RIGHT, 2, 0)
  17. end

It currently anchors the LEFT of the MyStatus UI to the RIGHT of the ZO_ChatWindowNumNotifications control,
with an offset of x = 2 and y = 0

You can change this accordingly to your needs, like described here:
https://wiki.esoui.com/Control:SetAnchor

To change the x offset just change the 2 to something negative (more to the left) or positive (more to the right).
Report comment to moderator  
Reply With Quote
Unread 02/28/22, 10:14 PM  
NeuroticPixels
Addon Addict
 
NeuroticPixels's Avatar
Premium Member

Forum posts: 210
File comments: 864
Uploads: 0
Any chance you can add a settings menu so we can move the icon on an X axis? I figured out how to do it in the MyStatus.xml, but an in-game menu would be ideal.

Edit: editing the xml file isn't permanent, unfortunately.
Last edited by NeuroticPixels : 02/28/22 at 11:02 PM.
Report comment to moderator  
Reply With Quote
Unread 10/19/21, 01:45 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Yes, it will be updated, as i'm the dev of LibLoadedAddons as well Just had not found the time to update all of my addons and there might be even others I do not know off.

Originally Posted by mrx2015
really love this addon since itīs so easy to change status. will it be updated ? i always get this annoying message when activated now:

[LibLoadedAddons]THIS LIBRARY IS OBSOLETE AND WILL BE DISABLED AT 2021-12!
Normal addon users: Check your addons for the usage of 'LibLoadedAddons' (search the addon's txt file for '## DependsOn: LibLoadedAddons' or '## OptionalDependsOn: LibLoadedAddons' and tell the dev of these addons to read the following link.

Addon devs please read AND adopt your addons prior to 2021-12: https://www.esoui.com/downloads/info....html#comments
[LibLoadedAddons]THIS LIBRARY IS OBSOLETE AND WILL BE DISABLED AT 2021-12!
Normal addon users: Check your addons for the usage of 'LibLoadedAddons' (search the addon's txt file for '## DependsOn: LibLoadedAddons' or '## OptionalDependsOn: LibLoadedAddons' and tell the dev of these addons to read the following link.
Report comment to moderator  
Reply With Quote
Unread 10/18/21, 01:47 PM  
mrx2015

Forum posts: 0
File comments: 7
Uploads: 0
really love this addon since itīs so easy to change status. will it be updated ? i always get this annoying message when activated now:

[LibLoadedAddons]THIS LIBRARY IS OBSOLETE AND WILL BE DISABLED AT 2021-12!
Normal addon users: Check your addons for the usage of 'LibLoadedAddons' (search the addon's txt file for '## DependsOn: LibLoadedAddons' or '## OptionalDependsOn: LibLoadedAddons' and tell the dev of these addons to read the following link.

Addon devs please read AND adopt your addons prior to 2021-12: https://www.esoui.com/downloads/info....html#comments
[LibLoadedAddons]THIS LIBRARY IS OBSOLETE AND WILL BE DISABLED AT 2021-12!
Normal addon users: Check your addons for the usage of 'LibLoadedAddons' (search the addon's txt file for '## DependsOn: LibLoadedAddons' or '## OptionalDependsOn: LibLoadedAddons' and tell the dev of these addons to read the following link.
Report comment to moderator  
Reply With Quote
Unread 11/04/20, 06:57 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Aye, thanks for the reminder. Working on a fix of the ZO_Object class stuff
Report comment to moderator  
Reply With Quote
Unread 11/03/20, 08:25 PM  
NeuroticPixels
Addon Addict
 
NeuroticPixels's Avatar
Premium Member

Forum posts: 210
File comments: 864
Uploads: 0
4 Errors

Logged in today and got these errors:

Code:
user:/AddOns/MyStatus/MyStatus.lua:191: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:191: in function 'OnPlayerActivated'
|caaaaaa<Locals> curStatus = 4 </Locals>|r
and

Code:
user:/AddOns/MyStatus/MyStatus.lua:53: function expected instead of nil
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:53: in function 'MyStatus:New'
|caaaaaa<Locals> self = [table:1]{}, control = ud, manager = [table:2]{}, comboBoxControl = ud </Locals>|r
user:/AddOns/MyStatus/MyStatus.lua:157: in function 'MyStatus_OnInitialized'
|caaaaaa<Locals> self = ud </Locals>|r
My_Status_Initialized:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud </Locals>|r
and

Code:
user:/AddOns/MyStatus/MyStatus.lua:149: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:149: in function 'MyStatus__OnMouseEnter'
|caaaaaa<Locals> control = ud </Locals>|r
My_StatusStatusSelectedItem_MouseEnter:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud </Locals>|r
and

Code:
user:/AddOns/MyStatus/MyStatus.lua:153: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:153: in function 'MyStatus__OnMouseExit'
|caaaaaa<Locals> control = ud </Locals>|r
My_StatusStatusSelectedItem_MouseExit:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud </Locals>|r
Report comment to moderator  
Reply With Quote
Unread 09/24/20, 07:09 AM  
Marazota
AddOn Author - Click to view AddOns

Forum posts: 257
File comments: 1513
Uploads: 2
error on Markarth PTS

user:/AddOns/MyStatus/MyStatus.lua:191: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:191: in function 'OnPlayerActivated'


and


user:/AddOns/MyStatus/MyStatus.lua:149: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:149: in function 'MyStatus__OnMouseEnter'
My_StatusStatusSelectedItem_MouseEnter:3: in function '(main chunk)'


and


user:/AddOns/MyStatus/MyStatus.lua:116: attempt to index a nil value
stack traceback:
user:/AddOns/MyStatus/MyStatus.lua:116: in function 'CHAT_SYSTEM:ShowMinBar'
EsoUI/Ingame/ChatSystem/Keyboard/KeyboardChatSystem.lua:369: in function 'ZO_ChatSystem:Minimize'
(tail call): ?
(tail call): ?
EsoUI/Ingame/Scenes/IngameFragments.lua:488: in function 'ZO_MinimizeChatFragment:Show'
EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:162: in function 'ZO_SceneFragment:ShouldBeShown'
EsoUI/Libraries/ZO_Scene/ZO_SceneFragment.lua:232: in function 'ZO_SceneFragment:Refresh'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:323: in function 'ZO_Scene:RefreshFragmentsHelper'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:331: in function 'ZO_Scene:RefreshFragments'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:286: in function 'ZO_Scene:SetState'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:213: in function 'ZO_SceneManager_Base:ShowScene'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:291: in function 'ZO_SceneManager_Leader:ShowScene'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:374: in function 'ZO_SceneManager_Leader:OnSceneStateHidden'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:287: in function 'ZO_SceneManager_Base:OnSceneStateChange'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:321: in function 'ZO_SceneManager_Leader:OnSceneStateChange'
EsoUI/Ingame/Scenes/IngameSceneManager.lua:372: in function 'ZO_IngameSceneManager:OnSceneStateChange'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:277: in function 'ZO_Scene:SetState'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:426: in function 'ZO_Scene:OnTransitionComplete'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:421: in function 'ZO_SceneetermineIfTransitionIsComplete'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:333: in function 'ZO_Scene:RefreshFragments'
EsoUI/Libraries/ZO_Scene/ZO_Scene.lua:286: in function 'ZO_Scene:SetState'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:221: in function 'ZO_SceneManager_Base:HideScene'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:295: in function 'ZO_SceneManager_Leader:HideScene'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Leader.lua:259: in function 'ZO_SceneManager_Leader:Show'
EsoUI/Libraries/ZO_Scene/ZO_SceneManager_Base.lua:237: in function 'ZO_SceneManager_Base:Toggle'
EsoUI/Ingame/Scenes/IngameSceneManager.lua:599: in function 'ZO_IngameSceneManager:OnToggleGameMenuBinding'
EsoUI/Ingame/Scenes/IngameSceneManager.lua:628: in function 'ZO_SceneManager_ToggleGameMenuBinding'
:1: in function '(main chunk)'
Last edited by Marazota : 09/24/20 at 07:10 AM.
Report comment to moderator  
Reply With Quote
Unread 06/15/19, 02:08 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Thanks, they are still great
I did not have this problem but as the online or offline state is handled by the server and this addon (and others) just use the given API calls to change it, it must be a server problem somehow.
I never had this happen to me so far or did not notice it if it happened to me though.
And if there is no way to rebuild it or to repeat it, it's really hard to check whether this or other addons might be the problem

Edit:
I'm working on an update and trying to "re-read & re-set" the current player status as the event player_activated (player is ready in the ingame world) fires. This should hopefully make the addon work correct in terms of "loading", as you said it happens after login the first time.

Originally Posted by RavenMind
I'm curious if anyone else may have this problem.
Occasionally I will show offline to everyone else, however my indicator shows green/yellow/red (whatever I had it previously set at). So I won't notice there's a problem until somebody tells me they tried to whisper me, etc., but I'm showing offline. Once I change my status to anything else, I continue to show up properly. This always seems to occur after login for the first time. I can't confirm if logging out/in, or to another toon fixes it or not. There doesn't seem to be any other repeatable actions that trigger this. I can play for a couple days, without having changed my status, then seemingly randomly, the next day I log in and am told I'm showing offline.
I had originally thought it was due to Social Status, since I downloaded it at the same time as this. However I disabled Social Status and this problem is still occurring.
(Otherwise, this is a great add-on!!)

P.S., Hope you have/had a nice vacation Baertram!!
Last edited by Baertram : 06/18/19 at 05:54 AM.
Report comment to moderator  
Reply With Quote
Unread 06/14/19, 10:45 PM  
RavenMind
 
RavenMind's Avatar

Forum posts: 6
File comments: 389
Uploads: 0
I'm curious if anyone else may have this problem.
Occasionally I will show offline to everyone else, however my indicator shows green/yellow/red (whatever I had it previously set at). So I won't notice there's a problem until somebody tells me they tried to whisper me, etc., but I'm showing offline. Once I change my status to anything else, I continue to show up properly. This always seems to occur after login for the first time. I can't confirm if logging out/in, or to another toon fixes it or not. There doesn't seem to be any other repeatable actions that trigger this. I can play for a couple days, without having changed my status, then seemingly randomly, the next day I log in and am told I'm showing offline.
I had originally thought it was due to Social Status, since I downloaded it at the same time as this. However I disabled Social Status and this problem is still occurring.
(Otherwise, this is a great add-on!!)

P.S., Hope you have/had a nice vacation Baertram!!
Last edited by RavenMind : 06/14/19 at 10:46 PM.
Report comment to moderator  
Reply With Quote
Unread 06/14/19, 12:16 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4881
File comments: 5947
Uploads: 78
Currently on vacations
Report comment to moderator  
Reply With Quote
Unread 06/14/19, 10:44 AM  
NeuroticPixels
Addon Addict
 
NeuroticPixels's Avatar
Premium Member

Forum posts: 210
File comments: 864
Uploads: 0
Originally Posted by Baertram
Correct, sorry forgot to update this addon.
Update coming soon?
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.