add offset and limit support