now passing amounts into constructors instead of strings and emitting amounts in events