closes #153 many improvements to type layer (test, docs, refinement)

Would @VisibleForTesting annotation help here?