reviewed and fixed