split init completely into separate files