separate initialise function