Addresses #75, #53, #76 and #49