Use designated initializer to avoid duplicate code