revised from Dr. Lin https://gist.github.com/htlin222/95ab35e5a55c4622d60e40fbc8ce4907?fbclid=IwAR3Hz_hvwozmfJvEFvGzm7GCHzpQvjYpV5zbybGyk2zNf7d5F3RkApMOuxo
revised from Dr. Lin https://gist.github.com/htlin222/95ab35e5a55c4622d60e40fbc8ce4907?fbclid=IwAR3Hz_hvwozmfJvEFvGzm7GCHzpQvjYpV5zbybGyk2zNf7d5F3RkApMOuxo