Tidied up and use cached values