pull-request-154-partial

Will review and submit the rest later.