introduce more convenient constructor