miscelaneous code from owbot and owbotflj blogs