fluent setters & minor tweaks
favor explicit injection over construction
adding more tests