add observer pattern;
add request object.