this is a straight repost from BF, I may edit it later: