use isDefined function where appropriate
rearrange method ordering and add descriptions
delegate to $ for element selection if $ exists