added append() and upgraded empty()