implement Whale factory
remove old implementation
implement whale factory