modified and compiling