tests passing, still in progress