special objects refactor;
add block