this is for public usage