compatible constructor