better names... and add abstract class and code39 struct