implemented delegation
added default callback