Addresses #19, #15, #10

Addresses #19, #15, #10