I am still thinking should I make it proto-based?