Version 1

Version 2

refinements included: