reorganize property loading so we can have external user properties, and fallback builtin properties