added a builder style initialiser