more progress, should be more or less functional (havent tested it though)