pretty much done ... want to handle relations with :through better and cleanup before merge