abstracting registration functions, changing module validation option property name and adding dependency validation option