adding assumptions and some phases