fixed typos, attempted to relax assumptions