added requires to sub classes