initialization is moved to a separate function