Bags of changes. still unstable, looking to simplyfy module structure