added float support, and kind of generic support