switch to a complete new way to do this