Abstract client
i need to get better on testing
add host method