First version...not finished yet...does not compile nor run yet...