implement block and extends