slight modifications, will go back and fix it up.