this is the final version, hope the public learners here like it