this ```init....``` is pretty long; can it be divided into smaller parts ?