this is horrible api design, no