Hardware:

Software:

Whew!