3 ways to create a generic field