updated after feedback