Tidied up constructor