reorganized to use speclj