working print
merged Pucong's code
tabbing mistakes fixed in trowel