this may be a little long, Please review