needs an empty public constructor?