uses promises on client, favor div based layout over tables