cleaned constructor