refactor: add constructor