updating from pypingous branch and correcting all imperfections