Revamped the immutables handling (last time i promise!) need to write lots of tests.