removed jQuery .live() usage, replaced with .delegate()