added copy/paste from self and web