basic frame works, need some details work