javabeans, but with whitelist sanitation and less boilerplate code