updated with better binding support.