refactor to take advantage of inherits where it makes sense
update the README
update the README