added license header and some crate attributes