storage dir can be provided thru constructor