Revised constructor