Completed nichj99 & perf1601