modified in final varsion