as a method it works but syntax gets too ugly