starting actual implementation