refactor: new constructor