added base structure
added more infrastructure code