self types baby step