version 2.0. definite submission