Only allow mutable values to be injected, added lots of comments