Split into both generic and non-generic implementation of the NonConstructable stuff. Cleaned up things.