huge overhaul to user options handling