Moving validation where it belongs, and retrieving amount as float