fixed constructor - now it doesn't leak internal abstractions