simulate () to abstract