final version - 2.0