restructured, added experimental stuff