Closes #33 (closed), #90 (closed), #16 (closed), #22 (closed), #28 (closed), #20 (closed), #19 (closed)