1. should be self contained (like imports, etc.) 2. only one function is currently supported 3. best practices (run udf out of feathr to verify it's working)