more updates. needs error handling. might need compiler