add auto spec generation
more dynamic specs, reorganize specs