split initializer into multiple methods