feat: add constructor for initializing