wip: better constructor