Re-do #37 and address #99