it compiles and step 1+2+3 work