Move spec implementations to core